Google Sign-In: nedir, Google girişi ve OAuth 2.0 SDK

Yazar: IT Sectr Yayınlanma: 2026-04-29 Okuma süresi: 10 dk

Google Sign-In, mobil ve web uygulamalarında Google hesapları aracılığıyla kullanıcı kimlik doğrulaması uygulayan Google SDK'sıdır. Teknoloji, üçüncü taraf bir uygulamaya şifre iletmeden Google API'lerine erişim token'ları almayı sağlayan OAuth 2.0 protokolüne dayanır. 3 milyardan fazla Android cihazı Google Sign-In'i desteklemektedir ve bu da onu mobil uygulamalarda en yaygın giriş yöntemi haline getirmektedir. Google Identity Platform, 2025'e göre SDK entegrasyonu kayıt süresini %60 azaltır ve kullanıcı dönüşümünü artırır.

Ana Noktalar

  • Google Sign-In — OAuth 2.0 tabanlı Google hesabıyla kimlik doğrulama SDK'sı
  • OAuth 2.0 — uygulamanın kullanıcı şifresi olmadan erişim token'ı aldığı yetkilendirme protokolü
  • Credential Manager — WebView olmadan Google girişi için modern Android API'si
  • ID Token — Kullanıcı kimlik verilerini içeren JSON Web Token (JWT)
  • Platformlar arası — Google Sign-In Android, iOS, web ve masaüstü platformlarında çalışır

Google Sign-In Nedir?

Google Sign-In, üçüncü taraf uygulamalarda kullanıcı kimlik doğrulaması için Google tarafından sağlanan bir Tek Oturum Açma (SSO) hizmetidir. SDK, geliştiricilerin kendi kayıt sistemlerini oluşturmadan bir Google hesabı aracılığıyla giriş yapmayı entegre etmelerine olanak tanır. Teknoloji, OAuth 2.0 protokolüne ve OpenID Connect'e dayanarak kullanıcının ad, e-posta, avatar ve benzersiz tanımlayıcı gibi kimlik bilgilerini sağlar.

Geleneksel e-posta ve şifre kimlik doğrulamasının aksine, Google Sign-In şifreleri hatırlama ve kayıt prosedüründen geçme ihtiyacını ortadan kaldırır. Kullanıcı cihazda bir Google hesabı seçer, izinleri onaylar ve uygulama bir erişim token'ı alır. Google Identity Platform (2025)'e göre, Google Sign-In içeren uygulamalar, e-posta/şifre formlarına kıyasla %52 daha fazla başarılı kayıt gösterir.

Google Sign-In üç kullanım senaryosunu destekler: kullanıcı kimlik doğrulaması (ID Token alma), Google API'lerine erişim için yetkilendirme (Access Token alma) ve daha önce yetkilendirilmiş kullanıcılar için sorunsuz kimlik doğrulama (Silent Sign-In). Her senaryo farklı bir kapsam seti (scope) gerektirir ve farklı token türleri döndürür.

Google Sign-In'de OAuth 2.0 Nasıl Çalışır

OAuth 2.0, bir uygulamanın kullanıcının kimlik bilgilerini ifşa etmeden kullanıcı kaynaklarına sınırlı erişim elde etmesini sağlayan bir yetkilendirme protokolüdür. Google Sign-In bağlamında protokol şu şekilde çalışır: uygulama Google aracılığıyla kullanıcıdan yetkilendirme ister, geçici bir yetkilendirme kodu alır, bunu erişim token'larıyla değiştirir ve bu token'ları Google API'lerini çağırmak için kullanır.

OAuth 2.0'ın önceki protokollerden temel farkı, kaynak sahibi (kullanıcı), istemci (uygulama), yetkilendirme sunucusu (Google) ve kaynak sunucusu (Google API) arasındaki rollerin ayrılmasıdır. Uygulama asla kullanıcının şifresini almaz — yalnızca iptal edilebilen bir token alır. Google Identity Platform, OAuth 2.0 üzerinde OpenID Connect spesifikasyonunu kullanarak JWT formatında standart bir ID Token ekler.

ID Token ve Access Token: Farklar

kotlin
// Credential Manager aracılığıyla ID Token alma örneği
val googleIdOption = GoogleIdCredentialOption.Builder()
    .setServerClientId(serverClientId)
    .build()

val credentialManager = CredentialManager.create(this)
val request = GetCredentialRequest.Builder()
    .addCredentialOption(googleIdOption)
    .build()

credentialManager.getCredential(request)
    .addOnSuccessListener { result ->
        val credential = result.credential as GoogleIdCredential
        Log.d("SignIn", credential.idToken)
    }

ID Token (JWT) üç bölüm içerir: imza algoritmasıyla bir başlık, kullanıcı verileriyle (sub, email, name, picture) bir yük ve doğrulama için bir imza. Uygulamanın sunucu tarafı, Google'ın genel anahtarlarını kullanarak ID Token imzasını doğrular ve kullanıcı tanımlayıcısını çıkarır. Bu yaklaşım, istemci uygulaması tehlikeye girse bile, saldırganın Google'ın özel anahtarına erişmeden token'ı taklit edememesini garanti eder.

Credential Manager: Android'de Yeni Giriş Yöntemi

Credential Manager, 2023'te tanıtılan ve tüm kimlik doğrulama yöntemlerini (Google Sign-In, şifre girişi, Passkeys) tek bir kullanıcı arayüzünde birleştiren modern bir Android API'sidir. Eski GoogleSignInClient'ın aksine, Credential Manager giriş için WebView gerektirmez — yerel bir Bottom Sheet kullanır, bu da kimlik doğrulamayı hızlandırır ve kullanıcı deneyimini iyileştirir.

Credential Manager'ın ana avantajı, tüm kimlik bilgisi türleri için birleşik bir kullanıcı deneyimidir. Kullanıcı, Google ile giriş yapma, Passkey kullanma veya şifre girme seçenekleri arasından seçim yapabileceği tek bir iletişim kutusu görür. Geliştiricinin farklı kimlik doğrulama akışlarını yönetmesi gerekmez — Credential Manager, Google Sign-In, Smart Lock ve Passkeys ile etkileşimi soyutlar. Google, Android 14+ için Google Sign-In entegrasyonunun birincil yöntemi olarak Credential Manager'ı önerir.

ParametreGoogleSignInClient (Eski)Credential Manager
Minimum APIAndroid 4.4 (API 19)Android 4.4 (API 19)
ArayüzWebView / BottomSheetYerel BottomSheet
Passkey DesteğiHayırEvet
SDK Boyutu~500 KB~150 KB
DurumKullanımdan kaldırıldı (2024)Google Tarafından Önerilir

GoogleSignInClient'tan Credential Manager'a Geçiş

Geçiş GoogleSignInClient'tan Credential Manager'a geçiş, istemci tarafı mantığında değişiklik gerektirir: GoogleSignInOptions yerine GoogleIdCredentialOption kullanın ve GoogleSignIn.getSignedInAccountFromIntent yerine sonucu GetCredentialResponse aracılığıyla işleyin. ID Token aynı JWT formatını koruduğu için sunucu tarafı değişiklik gerektirmez. Google I/O 2024'e göre, Google Play'deki uygulamaların yaklaşık %40'ı zaten Credential Manager'a geçmiştir.

Android Projesinde Google Sign-In Kurulumu

Google Sign-In'i bir Android uygulamasına entegre etmek, Google Cloud Console'da projeyi yapılandırmakla başlar. İlk adım, Android için bir OAuth 2.0 Client ID oluşturmaktır: uygulamanın paket adını ve SHA-1 sertifika parmak izini belirtin. Google, kimlik doğrulama talebinin sahte bir istemciden değil, uygulamanızdan geldiğini doğrulamak için bu verileri kullanır.

Google Cloud Console'da istemciyi oluşturduktan sonra, geliştirici build.gradle'a Credential Manager bağımlılığını ekler ve serverClientId ile GoogleIdCredentialOption'ı yapılandırır. Önemli: serverClientId, sunucu tarafının ID Token'ı doğrulamak için kullandığı, aynı Google Cloud projesindeki web uygulamasının Client ID'sidir. İstemci uygulaması token'ı doğrulamaz — yalnızca alır ve sunucuya iletir.

kotlin
// build.gradle (app) dependencies
implementation("androidx.credentials:credentials:1.5.0")
implementation("androidx.credentials:credentials-play-services-auth:1.5.0")
implementation("com.google.android.libraries.identity.googleid:googleid:1.1.0")

// Credential Manager aracılığıyla Google Sign-In isteği
suspend fun requestGoogleSignIn(context: Context): String? {
    val credentialManager = CredentialManager.create(context)
    val googleIdOption = GoogleIdCredentialOption.Builder()
        .setServerClientId(BuildConfig.SERVER_CLIENT_ID)
        .setAutoSelectEnabled(true)
        .build()

    val result = credentialManager.getCredential(
        context as Activity,
        GetCredentialRequest.Builder()
            .addCredentialOption(googleIdOption)
            .build()
    )
    return (result.credential as GoogleIdCredential).idToken
}

İstemcide ID Token alındıktan sonra, uygulama doğrulama için token'ı sunucusuna gönderir. Sunucu, Google'ın genel anahtarlarını (https://www.googleapis.com/oauth2/v3/certs adresinde mevcut), token'ın süre sonu zamanını (exp) ve aud alanı değerini kullanarak JWT imzasını doğrular — serverClientId ile eşleşmelidir. Doğrulamadan sonra sunucu kendi oturumunu oluşturur, örneğin dahili bir JWT veya Session Token yayınlar.

iOS'ta Google Sign-In: Kurulum ve Özellikler

iOS'ta Google Sign-In entegrasyonu, CocoaPods veya Swift Package Manager aracılığıyla kullanılabilen GoogleSignIn-iOS SDK aracılığıyla yapılır. Kurulum süreci, Google Cloud Console'da iOS için bir Client ID oluşturmayı (Bundle Identifier belirterek), geri arama için bir URL Scheme eklemeyi ve kimlik doğrulamadan sonra Google tarafından döndürülen URL'yi işlemek için AppDelegate'i yapılandırmayı içerir.

Google Sign-In'in iOS sürümünün Android'den önemli bir farkı, URL Scheme ve Info.plist'i yapılandırma gerekliliğidir. GoogleSDK geri arama için Universal Links kullanır, ancak yedek olarak `com.googleusercontent.apps.[CLIENT_ID]` biçiminde bir URL Scheme gereklidir. Uygulama başlatmaları arasında refresh token'ı kaydetmek için Keychain Sharing yapılandırması da gereklidir. Google Identity belgelerine göre iOS SDK, iOS 15 ve üstünü destekler.

swift
// iOS'ta Google Sign-In kurulumu
import GoogleSignIn

class SignInManager: ObservableObject {
    func signIn(presenting viewController: UIViewController) {
        GIDSignIn.sharedInstance.signIn(
            withPresenting: viewController
        ) { signInResult, error in
            guard let result = signInResult else {
                print("Sign in failed: \(error)")
                return
            }
            let idToken = result.user.idToken.tokenString
            // ID Token'ı sunucuya gönderme
            sendTokenToBackend(idToken)
        }
    }
}

iOS'ta Google Sign-In, daha önce yetkilendirme yapmış kullanıcılar için Silent Sign-In'i destekler. restorePreviousSignIn yöntemi, refresh token Keychain'de kaydedilmişse oturumu otomatik olarak geri yükler. Bu, özellikle kullanıcının her başlatmada yeniden giriş yapmaması gereken uygulamalar için önemlidir. Google'a göre, aktif Google oturumu olan cihazlarda Silent Sign-In vakaların %85'inde başarılı olur.

Token Yönetimi ve Güvenlik

Google Sign-In güvenliği üç düzeyde oluşturulmuştur: istemci doğrulama (SHA-1 uygulama imzası), taşıma şifrelemesi (HTTPS/TLS) ve kriptografik JWT imzası. Google'dan alınan ID Token, RS256 algoritması (SHA-256 ile RSA) kullanılarak imzalanır. Uygulamanın sunucu tarafı, token imzasını, süre sonunu ve yayıncıyı (iss) — yalnızca accounts.google.com — doğrulamalıdır.

Access Token, Google API'lerine (Google Drive, Google Calendar, YouTube vb.) erişim sağlayan geçici bir token'dır (1 saat geçerlidir). ID Token'ın aksine, Access Token kullanıcı bilgisi içermez — Google API sunucusunun istek yetkilendirmesi için kullandığı opak bir dizedir. Refresh Token, kullanıcının yeniden giriş yapmasına gerek kalmadan yeni Access Token'lar almayı sağlayan uzun ömürlü bir token'dır. Refresh Token yalnızca ilk girişte verilir ve kullanıcı Google hesap ayarlarından iptal edebilir.

kotlin
// Sunucuda ID Token işleme örneği (sözde kod)
fun verifyGoogleToken(idToken: String): User? {
    val verifier = GoogleIdTokenVerifier.Builder(
        NetHttpTransport(), GsonFactory.getDefaultInstance()
    ).setAudience(listOf(CLIENT_ID))
     .build()

    val token = verifier.verify(idToken) ?: return null
    val payload = token.payload

    return User(
        id = payload.subject,
        email = payload.email,
        name = payload.get("name") as String
    )
}

Refresh Token ve Oturum Yönetimi

Güvenlik önerileri: ID Token'ı asla güvenli olmayan kanallardan iletmeyin, tüm sunucu isteklerinde HTTPS kullanın, token süre sonunu (exp alanı) ve yayıncıyı (iss) kontrol edin. İstemcide, token'ları şifreleme olmadan SharedPreferences'te saklamayın — EncryptedSharedPreferences veya Android Keystore kullanın. Google Sign-In, sunucudan sunucuya kimlik doğrulama için tasarlanmamıştır — bunun için Service Accounts kullanın.

Kod Örneği: Kotlin'de Google Sign-In Entegrasyonu

Credential Manager ve ViewModel kullanarak bir Android uygulamasına Google Sign-In entegrasyonunun tam bir örneği. Uygulama bir giriş düğmesi gösterir, kimlik doğrulamadan sonra ID Token'ı sunucuya gönderir ve kullanıcı bilgilerini görüntüler. Kod, Credential Manager ile asenkron çalışma için coroutine'ler kullanır.

kotlin
class SignInViewModel: ViewModel() {
    private val cm = CredentialManager.create(getApplication())

    private val googleOption = GoogleIdCredentialOption.Builder()
        .setServerClientId(BuildConfig.SERVER_CLIENT_ID)
        .build()

    suspend fun signIn(): SignInResult {
        return try {
            val response = cm.getCredential(
                GetCredentialRequest.Builder()
                    .addCredentialOption(googleOption)
                    .build()
            )
            val credential = response.credential as GoogleIdCredential
            SignInResult.Success(credential.idToken)
        } catch (e: GetCredentialCancellationException) {
            SignInResult.Cancelled
        }
    }
}

sealed class SignInResult {
    data class Success(val idToken: String) : SignInResult()
    data class Error(val message: String) : SignInResult()
    data class Cancelled : SignInResult()
}

Başarılı kimlik doğrulamadan sonra, uygulama doğrulama ve oturum oluşturma için ID Token'ı sunucusuna göndermelidir. HTTPS kullanılması ve token'ın POST isteğinin gövdesinde iletilmesi önerilir. Sunucu, istemcinin EncryptedSharedPreferences'te sakladığı kendi oturum token'ını döndürür. Sunucuya yapılan sonraki her istekte, Google ID Token'ı değil, dahili token kullanılır.

Yaygın Entegrasyon Hataları ve Çözümleri

İlk yaygın hata, SHA-1 sertifikası uyuşmazlığıdır. Google Cloud Console, OAuth 2.0 Client ID'sini SHA-1 sertifika parmak izine bağlar. Uygulama bir hata ayıklama anahtarıyla derlenmiş ancak Client ID bir sürüm anahtarı için oluşturulmuşsa, Google Sign-In hata 12501 (SIGN_IN_FAILED) döndürür. Çözüm: Google Cloud Console'a her iki SHA-1 parmak izini (hata ayıklama ve sürüm) ekleyin veya geliştirme için bir Client ID ve üretim için ayrı bir Client ID kullanın.

İkinci sık karşılaşılan sorun, yanlış serverClientId'dir. Geliştiriciler genellikle Credential Manager'ın serverClientId parametresinde web uygulaması Client ID'si yerine Android Client ID'sini kullanırlar. Google, sunucu doğrulaması için ID Token oluşturmak üzere tam olarak web istemci ID'sini gerektirir. Android Client ID'si yalnızca kimlik doğrulama sırasında uygulamayı tanımlamak için kullanılır. serverClientId'nin Google Cloud Console'daki web uygulamasıyla eşleştiğinden emin olun.

Üçüncü hata, iptal yönetimini görmezden gelmektir. Kullanıcı, kimlik doğrulamayı tamamlamadan Google Sign-In iletişim kutusunu kapatabilir. Credential Manager, diğer hatalardan ayrı olarak ele alınması gereken bir GetCredentialCancellationException fırlatır. Birçok geliştirici tüm istisnaları hata olarak ele alır ve kullanıcı yalnızca işlemi iptal ettiğinde kullanıcıya “Giriş başarısız” mesajı gösterir. Doğru işleme: İptal durumunda — hiçbir şey gösterme, sadece başlangıç durumuna dön.

Sıkça Sorulan Sorular

2026'da hangi Google Sign-In SDK sürümünü kullanmalıyım?

Android için Credential Manager (AndroidX Credentials) ve iOS için Swift Package Manager aracılığıyla GIDSignIn SDK'sı kullanılması önerilir. Credential Manager, Google Sign-In, Passkeys ve şifre girişini tek bir arayüzde birleştiren, Google tarafından desteklenen modern bir API'dir. Kullanımdan kaldırılan GoogleSignInClient (com.google.android.gms:auth) artık kullanım için önerilmez.

Google Sign-In'de ID Token ve Access Token arasındaki fark nedir?

ID Token, kullanıcı bilgilerini (ad, e-posta, benzersiz ID) içeren bir JWT'dir. Uygulamanın sunucu tarafında kimlik doğrulama için kullanılır. Access Token, Google API'lerine (Google Drive, Calendar) erişmek için opak bir dizedir. ID Token 1 saat geçerlidir, Access Token da 1 saat geçerlidir ancak bir Refresh Token aracılığıyla yenilenebilir.

Google Sign-In'i sunucu tarafı doğrulaması olmadan kullanabilir miyim?

Teknik olarak evet, ancak güvenli değildir. ID Token'ı yalnızca istemcide doğrularsanız, bir saldırgan uygulamayı derleyip dağıtımdan çıkararak doğrulama mantığını çıkarabilir. Google'ın genel anahtarlarıyla sunucu tarafı doğrulaması, token'ın gerçekten Google tarafından yayınlandığını ve taklit edilmediğini garanti eder. Sunucusu olmayan uygulamalar için Firebase Authentication kullanın.

Google Sign-In neden 12501 hatasını döndürüyor?

12501 (SIGN_IN_FAILED) hatası, uygulamanın SHA-1 sertifikası Google Cloud Console'da belirtilenle eşleşmediğinde oluşur. Çözüm: konsola hata ayıklama sertifikasından (Android Studio'dan) ve sürüm sertifikasından SHA-1 ekleyin. Ayrıca konsoldaki paket adının build.gradle ile eşleştiğini kontrol edin. Değişiklikten sonra yayılması 24 saate kadar sürebilir.

Google Sign-In internet olmadan çalışır mı?

Hayır, Google Sign-In, Google sunucularıyla iletişim kurmak için internet bağlantısı gerektirir. Cihaz çevrimdışıysa, bir oturum önbellekleme mekanizması kullanın: başarılı girişten sonra token'ı EncryptedSharedPreferences'te kaydedin ve bir sonraki başlatmada geçerliliğini kontrol edin. Ağ olmadığında, kaydedilen verileri gösterin ve daha sonra giriş yapmayı önerin.

Özet

  • Google Sign-In — OAuth 2.0 ve OpenID Connect tabanlı Google hesabıyla kimlik doğrulama SDK'sı
  • OAuth 2.0 — uygulamanın kullanıcının şifresini iletmeden erişim token'ı aldığı protokol
  • Credential Manager — Yerel BottomSheet ve Passkey desteğiyle Google Sign-In için modern Android API'si
  • ID Token — Sunucunun Google'ın genel anahtarlarıyla doğruladığı kullanıcı verilerini içeren JWT
  • Güvenlik, SHA-1 uygulama imzası, HTTPS ve kriptografik JWT doğrulamasına dayanır
  • iOS entegrasyonu, URL Scheme, Keychain Sharing ve Swift Package Manager aracılığıyla GoogleSignIn SDK gerektirir
  • Yaygın hatalar — SHA-1 uyuşmazlığı, yanlış serverClientId ve CancellationException'ı görmezden gelme

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun