Google Sign-In: bu nədir, Google ilə giriş və OAuth 2.0 SDK

Müəllif: IT Sectr Dərc olunub: 2026-04-29 Oxuma vaxtı: 10 dəq

Google Sign-In — bu, Google tərəfindən mobil və veb tətbiqlərdə istifadəçilərin Google hesabları vasitəsilə autentifikasiyasını həyata keçirən SDK-dır. Texnologiyanın əsasında OAuth 2.0 protokolu dayanır ki, bu da üçüncü tərəf tətbiqinə şifrə ötürmədən Google API-ə giriş tokenləri əldə etməyə imkan verir. 3 milyarddan çox Android cihazı Google Sign-In-i dəstəkləyir və bu, onu mobil tətbiqlərdə ən geniş yayılmış giriş üsuluna çevirir. Google Identity Platform, 2025 məlumatlarına görə, SDK inteqrasiyası qeydiyyat müddətini 60% azaldır və istifadəçi konversiyasını artırır.

Başlıca

  • Google Sign-In — OAuth 2.0 əsasında Google hesabı ilə autentifikasiya SDK-ı
  • OAuth 2.0 — tətbiqin istifadəçinin şifrəsi olmadan giriş tokeni aldığı avtorizasiya protokolu
  • Credential Manager — WebView olmadan Google ilə giriş üçün müasir Android API
  • ID Token — istifadəçinin şəxsiyyət məlumatlarını ehtiva edən JSON Web Token (JWT)
  • Platformalararası — Google Sign-In Android, iOS, veb və desktop platformalarında işləyir

Google Sign-In nədir?

Google Sign-In — bu, Google tərəfindən üçüncü tərəf tətbiqlərində istifadəçilərin autentifikasiyası üçün təqdim edilən vahid giriş xidmətidir (Single Sign-On). SDK, proqramçılara öz qeydiyyat sistemini yaratmadan Google hesabı ilə girişi inteqrasiya etməyə imkan verir. Texnologiya OAuth 2.0 və OpenID Connect protokollarına əsaslanır, istifadəçi haqqında məlumat əldə etməyi təmin edir: ad, email, avatar və unikal identifikator.

Ənənəvi email və şifrə ilə autentifikasiyadan fərqli olaraq, Google Sign-In şifrələri yadda saxlamaq və qeydiyyat prosedurundan keçmək ehtiyacını aradan qaldırır. İstifadəçi cihazda Google hesabını seçir, icazələri təsdiqləyir və tətbiq giriş tokeni alır. Google Identity Platform (2025) məlumatlarına görə, Google Sign-In olan tətbiqlər email/şifrə forması ilə müqayisədə 52% daha çox uğurlu qeydiyyat göstərir.

Google Sign-In üç istifadə ssenarisini dəstəkləyir: istifadəçi autentifikasiyası (ID Token əldə etmə), Google API-ə giriş üçün avtorizasiya (Access Token əldə etmə) və artıq avtorizasiya olunmuş istifadəçilər üçün problemsiz autentifikasiya (Silent Sign-In). Hər ssenari müxtəlif icazələr (scopes) tələb edir və müxtəlif token növləri qaytarır.

OAuth 2.0 Google Sign-In-də necə işləyir

OAuth 2.0 — bu, tətbiqə istifadəçinin məlumatlarını açıqlamadan onun resurslarına məhdud giriş əldə etməyə imkan verən avtorizasiya protokoludur. Google Sign-In kontekstində protokol belə işləyir: tətbiq istifadəçidən Google vasitəsilə avtorizasiya tələb edir, müvəqqəti avtorizasiya kodu alır, onu giriş tokenlərinə dəyişir və bu tokenlərdən Google API-ə zəng etmək üçün istifadə edir.

OAuth 2.0ın əvvəlki protokollardan əsas fərqi — resurs sahibi (istifadəçi), müştəri (tətbiq), avtorizasiya serveri (Google) və resurs serveri (Google API) arasında rolların bölgüsüdür. Tətbiq heç vaxt istifadəçinin şifrəsini almır — yalnız ləğv edilə bilən token alır. Google Identity Platform OAuth 2.0 üzərində OpenID Connect spesifikasiyasından istifadə edir və JWT formatında standartlaşdırılmış ID Token əlavə edir.

ID Token və Access Token: fərqlər

kotlin
// Credential Manager vasitəsilə ID Token əldə etmə nümunəsi
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) üç seqmentdən ibarətdir: imza alqoritmi ilə başlıq, istifadəçi məlumatları ilə payload (sub, email, name, picture) və doğrulama üçün imza. Tətbiqin server hissəsi Google-ın açıq açarlarından istifadə edərək ID Token-in imzasını yoxlayır və istifadəçi identifikatorunu çıxarır. Bu yanaşma, müştəri tətbiqi kompromatə edilsə belə, təcavüzkärın Google-ın özəl açarına çıxış əldə etmədən tokeni saxtalaşdıra bilməyəcəyini təmin edir.

Credential Manager: Android-də yeni giriş üsulu

Credential Manager — bu, 2023-cü ildə təqdim edilmiş, bütün autentifikasiya üsullarını (Google Sign-In, şifrə ilə giriş, Passkeys) vahid istifadəçi interfeysində birləşdirən müasir Android API-dir. Köhnə GoogleSignInClient-dən fərqli olaraq, Credential Manager giriş üçün WebView tələb etmir — yerli Bottom Sheet istifadə olunur ki, bu da autentifikasiyanı sürətləndirir və istifadəçi təcrübəsini yaxşılaşdırır.

Credential Managerın əsas üstünlüyü — bütün növ məlumat növləri üçün vahid UX-dir. İstifadəçi bir dialoq qutusu görür və orada seçə bilər: Google ilə giriş, Passkey istifadə etmək və ya şifrə daxil etmək. Proqramçı müxtəlif autentifikasiya axınlarını idarə etməli deyil — Credential Manager Google Sign-In, Smart Lock və Passkeys ilə qarşılıqlı əlaqəni abstraksiya edir. Google Android 14+ üçün Credential Manager-i Google Sign-In inteqrasiyasının əsas üsulu kimi tövsiyə edir.

ParametrGoogleSignInClient (köhnəlmiş)Credential Manager
Minimum APIAndroid 4.4 (API 19)Android 4.4 (API 19)
İnterfeysWebView / BottomSheetYerli BottomSheet
Passkeys dəstəyiXeyrBəli
SDK ölçüsü~500 KB~150 KB
StatusDeprecated (2024)Google tərəfindən tövsiyə olunur

GoogleSignInClient-dən Credential Manager-ə miqrasiya

Miqrasiya GoogleSignInClient-dən Credential Manager-ə müştəri məntiqinin dəyişdirilməsini tələb edir: GoogleSignInOptions əvəzinə GoogleIdCredentialOption istifadə olunur, GoogleSignIn.getSignedInAccountFromIntent əvəzinə isə GetCredentialResponse vasitəsilə nəticənin işlənməsi. Server hissəsi dəyişiklik tələb etmir, çünki ID Token eyni JWT formatında qalır. Google I/O 2024 məlumatlarına görə, Google Play-dəki tətbiqlərin təxminən 40%-ı artıq Credential Manager-ə keçib.

Android layihəsində Google Sign-In qurulması

Google Sign-In-in Android tətbiqində inteqrasiyası Google Cloud Console-da layihənin qurulması ilə başlayır. İlk addım — Android üçün OAuth 2.0 Client ID yaratmaq: bunun üçün tətbiqin package name və imza sertifikatının SHA-1 qeyd olunur. Google bu məlumatlardan autentifikasiya sorğusunun məhz sizin tətbiqinizdən gəldiyini, saxta müştəridən olmadığını yoxlamaq üçün istifadə edir.

Google Cloud Console-da müştəri yaratdıqdan sonra proqramçı build.gradle-ə Credential Manager dependency əlavə edir və GoogleIdCredentialOption-u serverClientId ilə konfiqurasiya edir. Vacibdir: serverClientId — bu, ID Token-ı doğrulamaq üçün server hissəsi tərəfindən istifadə olunan eyni Google Cloud layihəsindən veb tətbiqin Client ID-sidir. Müştəri tətbiqi tokeni yoxlamır — yalnız alır və serverə ötürür.

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 vasitəsilə Google Sign-In sorğusu
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
}

Müştəridə ID Token aldıqdan sonra tətbiq onu doğrulama və sessiya yaratmaq üçün öz serverinə göndərir. Server Google-ın açıq açarlarından (https://www.googleapis.com/oauth2/v3/certs ünvanında mövcuddur) istifadə edərək JWT imzasını, tokenin müddətini (exp) və aud sahəsinin dəyərini yoxlayır — serverClientId ilə üst-üstə düşməlidir. Doğrulamadan sonra server öz sessiyasını yaradır, məsələn, daxili JWT və ya Session Token verir.

iOS-da Google Sign-In: konfiqurasiya və xüsusiyyətlər

Google Sign-In-in iOS-da inteqrasiyası CocoaPods və ya Swift Package Manager vasitəsilə əlçatan GoogleSignIn-iOS SDK vasitəsilə həyata keçirilir. Konfiqurasiya prosesi Google Cloud Console-da iOS üçün Client ID yaratmağı (Bundle Identifier ilə), geri çağırış üçün URL Scheme əlavə etməyi və autentifikasiyadan sonra Google tərəfindən qaytarılan URL-i idarə etmək üçün AppDelegate konfiqurasiyasını əhatə edir.

iOS Google Sign-In versiyasının Android-dən mühüm fərqi — URL Scheme və Info.plist konfiqurasiyası ehtiyacıdır. Google SDK geri çağırış üçün Universal Links istifadə edir, lakin fallback üçün `com.googleusercontent.apps.[CLIENT_ID]` şəklində URL Scheme tələb olunur. Həmçinin tətbiqin işə salınmaları arasında refresh token saxlamaq üçün Keychain Sharing konfiqurasiyası tələb olunur. Google Identity sənədlərinə görə, iOS SDK iOS 15 və daha yenisini dəstəkləyir.

swift
// iOS-da Google Sign-In qurulması
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-ı serverə göndərmək
            sendTokenToBackend(idToken)
        }
    }
}

iOS-da Google Sign-In əvvəllər avtorizasiya olunmuş istifadəçilər üçün Silent Sign-In dəstəkləyir. restorePreviousSignIn metodu, əgər refresh token Keychain-də saxlanılıbsa, sessiyanı avtomatik bərpa edir. Bu, istifadəçinin hər işə salınmada yenidən daxil olmamalı olduğu tətbiqlər üçün xüsusilə vacibdir. Google məlumatlarına görə, Silent Sign-In aktiv Google sessiyası olan cihazlarda 85% hallarda uğurlu olur.

Tokenlərin işlənməsi və təhlükəsizlik

Təhlükəsizlik Google Sign-In üç səviyyədə qurulur: müştəri yoxlaması (tətbiqin SHA-1 imzası), nəqliyyat şifrələməsi (HTTPS/TLS) və JWT-nin kriptoqrafik imzası. Google-dan alınan ID Token RS256 alqoritmi (RSA SHA-256 ilə) istifadə edərək imzalanır. Tətbiqin server hissəsi tokenin imzasını, müddətini və issuer (iss) — yalnız accounts.google.com — yoxlamalıdır.

Access Token — bu, müvəqqəti tokendir (1 saat yaşayır), Google API-ə (Google Drive, Google Calendar, YouTube və s.) giriş verir. ID Token-dən fərqli olaraq, Access Token istifadəçi haqqında məlumat ehtiva etmir — bu, Google API serverinin sorğunu avtorizasiya etmək üçün istifadə etdiyi opaque sətirdir. Refresh Token — istifadəçinin yenidən daxil olmasına ehtiyac olmadan yeni Access Token əldə etməyə imkan verən uzunömürlü tokendir. Refresh Token yalnız ilk girişdə verilir və istifadəçi tərəfindən Google hesabı parametrlərində ləğv edilə bilər.

kotlin
// Serverdə ID Token-ın işlənməsi nümunəsi (psevdokod)
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 və sessiyanın idarə edilməsi

Təhlükəsizlik tövsiyələri: ID Token-ı heç vaxt qorunmayan kanallar vasitəsilə ötürməyin, serverə bütün sorğular üçün HTTPS istifadə edin, tokenin müddətini (exp sahəsi) və issuer (iss) yoxlayın. Müştəridə tokenləri şifrələmədən SharedPreferences-da saxlamayın — EncryptedSharedPreferences və ya Android Keystore istifadə edin. Google Sign-In server-server autentifikasiyası üçün nəzərdə tutulmayıb — bunun üçün Service Accounts istifadə olunur.

Kod nümunəsi: Kotlin-də Google Sign-In inteqrasiyası

Credential Manager və ViewModel istifadə edərək Android tətbiqində Google Sign-In inteqrasiyasının tam nümunəsi. Tətbiq giriş düyməsini göstərir, autentifikasiyadan sonra ID Token-ı serverə göndərir və istifadəçi haqqında məlumat göstərir. Kod Credential Manager ilə asinxron iş üçün coroutines istifadə edir.

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()
}

Uğurlu autentifikasiyadan sonra tətbiq ID Token-ı doğrulama və sessiya yaratmaq üçün öz serverinə göndərməlidir. HTTPS istifadə etmək və tokeni POST sorğunun gövdəsində ötürmək tövsiyə olunur. Server müştərinin EncryptedSharedPreferences-da saxladığı öz sessiya tokenini qaytarır. Serverə hər sonrakı sorğuda daxili token istifadə olunur, Google ID Token deyil.

İnteqrasiya zamanı tipik səhvlər və onların həlli

İlk geniş yayılmış səhv — sertifikatın SHA-1 uyğunsuzluğu. Google Cloud Console OAuth 2.0 Client ID-ni imza sertifikatının SHA-1 çapına bağlayır. Əgər tətbiq debug açarı ilə yığılırsa, lakin Client ID release açarı üçün yaradılıbsa, Google Sign-In 12501 (SIGN_IN_FAILED) səhvi qaytaracaq. Həll — Google Cloud Console-da həm debug, həm də release SHA-1 əlavə edin və ya inkişaf üçün bir Client ID və istehsal üçün ayrı bir Client ID istifadə edin.

İkinci tez-tez rast gəlinən problem — yanlış serverClientId. Proqramçılar tez-tez Credential Manager-in serverClientId parametrində veb tətbiqin Client ID əvəzinə Android Client ID istifadə edirlər. Google server doğrulaması üçün nəzərdə tutulmuş ID Token yaratmaq üçün məhz veb-client ID tələb edir. Android Client ID yalnız autentifikasiya prosesində tətbiqi müəyyənləşdirmək üçün istifadə olunur. serverClientId-in Google Cloud Console-da veb tətbiqinə uyğun olduğuna əmin olun.

Üçüncü səhv — ləğv etmənin idarə edilməsinin görməməzdən gəlinməsi. İstifadəçi autentifikasiyanı tamamlamadan Google Sign-In dialoqunu bağlaya bilər. Credential Manager digər səhvlərdən ayrıca idarə edilməli olan GetCredentialCancellationException atır. Bir çox proqramçı bütün istisnaları səhv kimi idarə edir və istifadəçiyə „Giriş uğursuz oldu” mesajı göstərir, halbuki istifadəçi sadəcə əməliyyatı ləğv etdi. Düzgün idarəetmə: Cancelled olduqda — heç nə göstərməyin, sadəcə ilkin vəziyyətə qayıdın.

Tez-tez verilən suallar

2026-cı ildə Google Sign-In SDK-nın hansı versiyasından istifadə etməliyəm?

Android üçün Credential Manager (AndroidX Credentials) və iOS üçün Swift Package Manager vasitəsilə GIDSignIn SDK istifadə etmək tövsiyə olunur. Credential Manager — Google tərəfindən dəstəklənən, Google Sign-In, Passkeys və şifrə ilə girişi vahid interfeysdə birləşdirən müasir API-dir. Köhnəlmiş GoogleSignInClient (com.google.android.gms:auth) artıq istifadə üçün tövsiyə olunmur.

Google Sign-In-də ID Token və Access Token arasında nə fərq var?

ID Token — istifadəçi haqqında məlumat (ad, email, unikal ID) ehtiva edən JWT-dir. Tətbiqin server tərəfində autentifikasiya üçün istifadə olunur. Access Token — Google API-ə (Google Drive, Calendar) giriş üçün opaque sətirdir. ID Token 1 saat yaşayır, Access Token də 1 saat yaşayır, lakin Refresh Token vasitəsilə yenilənə bilər.

Google Sign-In server doğrulaması olmadan istifadə edilə bilərmi?

Texniki olaraq mümkündür, lakin bu təhlükəsiz deyil. Əgər ID Token yalnız müştəridə yoxlanırsa, təcavüzkər tətbiqi dekompilyasiya edə və doğrulama məntiqini çıxara bilər. Google-ın açıq açarlarından istifadə edən server doğrulaması tokenin həqiqətən Google tərəfindən verildiyini və saxtalaşdırılmadığını təmin edir. Serveri olmayan tətbiqlər üçün Firebase Authentication istifadə edin.

Niyə Google Sign-In 12501 səhvini qaytarır?

12501 (SIGN_IN_FAILED) səhvi tətbiq sertifikatının SHA-1 Google Cloud Console-da göstərilənlə uyğun gəlmədikdə baş verir. Həll: konsolda debug sertifikatından (Android Studio-dan) və release sertifikatından SHA-1 əlavə edin. Həmçinin konsoldakı package name-in build.gradle ilə uyğun olduğunu yoxlayın. Dəyişiklikdən sonra yayılma üçün 24 saata qədər vaxt tələb oluna bilər.

Google Sign-In internet olmadan girişi dəstəkləyirmi?

Xeyr, Google Sign-In Google serverləri ilə əlaqə üçün internet bağlantısı tələb edir. Cihaz oflayndırsa, sessiya keşləmə mexanizmindən istifadə edin: uğurlu girişdən sonra tokeni EncryptedSharedPreferences-da saxlayın və növbəti işə salınmada onun etibarlılığını yoxlayın. Şəbəkə olmadıqda saxlanılan məlumatları göstərin və daha sonra daxil olmağı təklif edin.

Nəticələr

  • Google Sign-In — OAuth 2.0 və OpenID Connect əsasında Google hesabı ilə autentifikasiya SDK-ı
  • OAuth 2.0 — tətbiqin istifadəçinin şifrəsini ötürmədən giriş tokeni aldığı protokol
  • Credential Manager — yerli BottomSheet və Passkeys dəstəyi ilə Google Sign-In üçün müasir Android API
  • ID Token — serverin Google-ın açıq açarları ilə yoxladığı istifadəçi məlumatları olan JWT
  • Təhlükəsizlik tətbiqin SHA-1 imzasına, HTTPS və JWT-nin kriptoqrafik doğrulamasına əsaslanır
  • iOS inteqrasiyası URL Scheme, Keychain Sharing və Swift Package Manager vasitəsilə GoogleSignIn SDK konfiqurasiyası tələb edir
  • Tez-tez səhvlər — SHA-1 uyğunsuzluğu, yanlış serverClientId və CancellationException-un görməməzdən gəlinməsi

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun