Google Sign-In Google द्वारा प्रदान किया गया एक SDK है जो मोबाइल और वेब एप्लिकेशन में Google खातों के माध्यम से उपयोगकर्ता प्रमाणीकरण लागू करता है। तकनीक OAuth 2.0 प्रोटोकॉल पर आधारित है, जो तीसरे पक्ष के एप्लिकेशन को पासवर्ड दिए बिना Google API तक पहुँच टोकन प्राप्त करने की अनुमति देता है। 3 बिलियन से अधिक Android डिवाइस Google Sign-In का समर्थन करते हैं, जो इसे मोबाइल ऐप्स में लॉगिन का सबसे सामान्य तरीका बनाता है। Google Identity Platform, 2025 के अनुसार, SDK एकीकरण पंजीकरण समय को 60% कम करता है और उपयोगकर्ता रूपांतरण बढ़ाता है।
मुख्य बातें
Google Sign-In Google द्वारा प्रदान की गई एक सिंगल साइन-ऑन (SSO) सेवा है जो तीसरे पक्ष के एप्लिकेशन में उपयोगकर्ता प्रमाणीकरण के लिए है। SDK डेवलपर्स को अपनी स्वयं की पंजीकरण प्रणाली बनाए बिना Google खाते के माध्यम से लॉगिन एकीकृत करने की अनुमति देता है। तकनीक OAuth 2.0 प्रोटोकॉल और OpenID Connect पर आधारित है, जो उपयोगकर्ता की पहचान जानकारी प्रदान करती है: नाम, ईमेल, अवतार और अद्वितीय पहचानकर्ता।
पारंपरिक ईमेल और पासवर्ड प्रमाणीकरण के विपरीत, Google Sign-In पासवर्ड याद रखने और पंजीकरण प्रक्रिया से गुज़रने की आवश्यकता को समाप्त करता है। उपयोगकर्ता डिवाइस पर Google खाता चुनता है, अनुमतियों की पुष्टि करता है, और ऐप को एक्सेस टोकन प्राप्त होता है। Google Identity Platform (2025) के अनुसार, Google Sign-In वाले ऐप्स ईमेल/पासवर्ड फ़ॉर्म की तुलना में 52% अधिक सफल पंजीकरण दिखाते हैं।
Google Sign-In तीन उपयोग परिदृश्यों का समर्थन करता है: उपयोगकर्ता प्रमाणीकरण (ID Token प्राप्त करना), Google API तक पहुँच के लिए प्राधिकरण (Access Token प्राप्त करना), और पहले से अधिकृत उपयोगकर्ताओं के लिए सहज प्रमाणीकरण (Silent Sign-In)। प्रत्येक परिदृश्य के लिए विभिन्न स्कोप की आवश्यकता होती है और विभिन्न प्रकार के टोकन लौटाता है।
OAuth 2.0 एक प्राधिकरण प्रोटोकॉल है जो किसी ऐप को उपयोगकर्ता की साख प्रकट किए बिना उपयोगकर्ता संसाधनों तक सीमित पहुँच प्राप्त करने की अनुमति देता है। Google Sign-In के संदर्भ में, प्रोटोकॉल इस प्रकार काम करता है: ऐप Google के माध्यम से उपयोगकर्ता से प्राधिकरण का अनुरोध करता है, एक अस्थायी प्राधिकरण कोड प्राप्त करता है, इसे एक्सेस टोकन के लिए विनिमय करता है, और उन टोकन का उपयोग Google API को कॉल करने के लिए करता है।
OAuth 2.0 का पिछले प्रोटोकॉल से मुख्य अंतर संसाधन स्वामी (उपयोगकर्ता), क्लाइंट (ऐप), प्राधिकरण सर्वर (Google) और संसाधन सर्वर (Google API) के बीच भूमिकाओं का पृथक्करण है। ऐप कभी भी उपयोगकर्ता का पासवर्ड प्राप्त नहीं करता — केवल एक टोकन जिसे रद्द किया जा सकता है। Google Identity Platform OAuth 2.0 के ऊपर OpenID Connect विनिर्देश का उपयोग करता है, जो JWT प्रारूप में एक मानकीकृत ID Token जोड़ता है।
// Credential Manager के माध्यम से ID Token प्राप्त करने का उदाहरण
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) में तीन खंड होते हैं: हस्ताक्षर एल्गोरिदम के साथ हेडर, उपयोगकर्ता डेटा (sub, email, name, picture) के साथ पेलोड, और सत्यापन के लिए हस्ताक्षर। ऐप का सर्वर-साइड भाग Google की सार्वजनिक कुंजियों का उपयोग करके ID Token हस्ताक्षर सत्यापित करता है और उपयोगकर्ता पहचानकर्ता निकालता है। यह दृष्टिकोण गारंटी देता है कि भले ही क्लाइंट ऐप से समझौता किया जाए, हमलावर Google की निजी कुंजी तक पहुँच के बिना टोकन जाली नहीं बना सकता।
Credential Manager 2023 में पेश किया गया एक आधुनिक Android API है जो सभी प्रमाणीकरण विधियों (Google Sign-In, पासवर्ड लॉगिन, Passkeys) को एक ही उपयोगकर्ता इंटरफ़ेस में जोड़ता है। पुराने GoogleSignInClient के विपरीत, Credential Manager को लॉगिन के लिए WebView की आवश्यकता नहीं है — यह मूल Bottom Sheet का उपयोग करता है, जो प्रमाणीकरण को गति देता है और उपयोगकर्ता अनुभव में सुधार करता है।
Credential Manager का मुख्य लाभ सभी क्रेडेंशियल प्रकारों के लिए एकीकृत UX है। उपयोगकर्ता एक संवाद देखता है जहाँ वह चुन सकता है: Google से लॉगिन करें, Passkey का उपयोग करें, या पासवर्ड दर्ज करें। डेवलपर को विभिन्न प्रमाणीकरण प्रवाह प्रबंधित करने की आवश्यकता नहीं है — Credential Manager Google Sign-In, Smart Lock और Passkeys के साथ बातचीत को सारगर्भित करता है। Google Android 14+ के लिए Google Sign-In एकीकरण के प्राथमिक तरीके के रूप में Credential Manager की सिफारिश करता है।
| पैरामीटर | GoogleSignInClient (पुराना) | Credential Manager |
|---|---|---|
| न्यूनतम API | Android 4.4 (API 19) | Android 4.4 (API 19) |
| इंटरफ़ेस | WebView / BottomSheet | मूल BottomSheet |
| Passkey समर्थन | नहीं | हाँ |
| SDK आकार | ~500 KB | ~150 KB |
| स्थिति | अप्रचलित (2024) | Google द्वारा अनुशंसित |
माइग्रेशन GoogleSignInClient से Credential Manager में क्लाइंट-साइड तर्क में बदलाव की आवश्यकता है: GoogleSignInOptions के बजाय GoogleIdCredentialOption का उपयोग करें, और GoogleSignIn.getSignedInAccountFromIntent के बजाय GetCredentialResponse के माध्यम से परिणाम संभालें। सर्वर-साइड भाग में बदलाव की आवश्यकता नहीं है क्योंकि ID Token वही JWT प्रारूप रहता है। Google I/O 2024 के अनुसार, Google Play पर लगभग 40% ऐप पहले ही Credential Manager पर माइग्रेट हो चुके हैं।
Google Sign-In को Android ऐप में एकीकृत करना Google Cloud Console में प्रोजेक्ट कॉन्फ़िगर करने से शुरू होता है। पहला कदम Android के लिए OAuth 2.0 Client ID बनाना है: ऐप का पैकेज नाम और SHA-1 प्रमाणपत्र फ़िंगरप्रिंट निर्दिष्ट करें। Google इस डेटा का उपयोग यह सत्यापित करने के लिए करता है कि प्रमाणीकरण अनुरोध आपके ऐप से आ रहा है न कि नकली क्लाइंट से।
Google Cloud Console में क्लाइंट बनाने के बाद, डेवलपर build.gradle में Credential Manager निर्भरता जोड़ता है और serverClientId के साथ GoogleIdCredentialOption कॉन्फ़िगर करता है। महत्वपूर्ण: serverClientId उसी Google Cloud प्रोजेक्ट से वेब एप्लिकेशन का Client ID है, जिसका उपयोग सर्वर साइड ID Token को सत्यापित करने के लिए करता है। क्लाइंट ऐप टोकन सत्यापित नहीं करता — वह केवल इसे प्राप्त करता है और सर्वर को भेजता है।
// 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 के माध्यम से Google Sign-In का अनुरोध करें
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
}क्लाइंट पर ID Token प्राप्त करने के बाद, ऐप इसे अपने सर्वर पर भेजता है जहाँ सत्यापन किया जाता है। सर्वर Google की सार्वजनिक कुंजियों (https://www.googleapis.com/oauth2/v3/certs पर उपलब्ध), टोकन समाप्ति समय (exp), और aud फ़ील्ड मान का उपयोग करके JWT हस्ताक्षर सत्यापित करता है — इसे serverClientId से मेल खाना चाहिए। सत्यापन के बाद, सर्वर अपना स्वयं का सत्र बनाता है, उदाहरण के लिए, आंतरिक JWT या Session Token जारी करता है।
iOS पर Google Sign-In का एकीकरण GoogleSignIn-iOS SDK के माध्यम से किया जाता है, जो CocoaPods या Swift Package Manager के माध्यम से उपलब्ध है। सेटअप प्रक्रिया में Google Cloud Console में iOS के लिए Client ID बनाना (Bundle Identifier निर्दिष्ट करना), कॉलबैक के लिए URL Scheme जोड़ना और प्रमाणीकरण के बाद Google द्वारा लौटाए गए URL को संभालने के लिए AppDelegate कॉन्फ़िगर करना शामिल है।
Google Sign-In के iOS संस्करण का Android से महत्वपूर्ण अंतर URL Scheme और Info.plist कॉन्फ़िगर करने की आवश्यकता है। GoogleSDK कॉलबैक के लिए Universal Links का उपयोग करता है, लेकिन फ़ॉलबैक के लिए `com.googleusercontent.apps.[CLIENT_ID]` फ़ॉर्म के URL Scheme की आवश्यकता है। ऐप लॉन्च के बीच रिफ्रेश टोकन को सहेजने के लिए Keychain Sharing कॉन्फ़िगरेशन की भी आवश्यकता है। Google Identity दस्तावेज़ के अनुसार, iOS SDK iOS 15 और उससे ऊपर का समर्थन करता है।
// iOS पर Google Sign-In सेट करना
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 सर्वर पर भेजना
sendTokenToBackend(idToken)
}
}
}iOS पर, Google Sign-In उन उपयोगकर्ताओं के लिए Silent Sign-In का समर्थन करता है जिन्होंने पहले अधिकृत किया है। restorePreviousSignIn विधि स्वचालित रूप से सत्र को पुनर्स्थापित करती है यदि रिफ्रेश टोकन Keychain में सहेजा गया है। यह उन ऐप्स के लिए विशेष रूप से महत्वपूर्ण है जहाँ उपयोगकर्ता को प्रत्येक लॉन्च पर फिर से लॉगिन नहीं करना चाहिए। Google के अनुसार, सक्रिय Google सत्र वाले उपकरणों पर Silent Sign-In 85% मामलों में सफल होता है।
Google Sign-In की सुरक्षा तीन स्तरों पर बनी है: क्लाइंट सत्यापन (SHA-1 ऐप हस्ताक्षर), परिवहन एन्क्रिप्शन (HTTPS/TLS), और क्रिप्टोग्राफ़िक JWT हस्ताक्षर। Google से प्राप्त ID Token RS256 एल्गोरिदम (SHA-256 के साथ RSA) का उपयोग करके हस्ताक्षरित है। ऐप के सर्वर-साइड भाग को टोकन हस्ताक्षर, समाप्ति और जारीकर्ता (iss) — केवल accounts.google.com को सत्यापित करना चाहिए।
Access Token एक अस्थायी टोकन (1 घंटे तक जीवित) है जो Google API (Google Drive, Google Calendar, YouTube, आदि) तक पहुँच प्रदान करता है। ID Token के विपरीत, Access Token में उपयोगकर्ता की जानकारी नहीं होती — यह एक अपारदर्शी स्ट्रिंग है जिसका उपयोग Google API सर्वर अनुरोध प्राधिकरण के लिए करता है। Refresh Token एक लंबे समय तक जीवित रहने वाला टोकन है जो उपयोगकर्ता को फिर से लॉगिन किए बिना नए Access Token प्राप्त करने की अनुमति देता है। Refresh Token केवल पहले लॉगिन पर जारी किया जाता है और उपयोगकर्ता अपनी Google खाता सेटिंग में इसे रद्द कर सकता है।
// सर्वर पर ID Token प्रसंस्करण का उदाहरण (स्यूडोकोड)
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
)
}सुरक्षा अनुशंसाएँ: ID Token को कभी भी असुरक्षित चैनलों पर न भेजें, सभी सर्वर अनुरोधों के लिए HTTPS का उपयोग करें, टोकन समाप्ति (exp फ़ील्ड) और जारीकर्ता (iss) की जाँच करें। क्लाइंट पर, बिना एन्क्रिप्शन के SharedPreferences में टोकन स्टोर न करें — EncryptedSharedPreferences या Android Keystore का उपयोग करें। Google Sign-In सर्वर-से-सर्वर प्रमाणीकरण के लिए नहीं है — इसके लिए Service Accounts का उपयोग करें।
Credential Manager और ViewModel का उपयोग करके Android ऐप में Google Sign-In एकीकरण का पूरा उदाहरण। ऐप एक साइन-इन बटन प्रदर्शित करता है, प्रमाणीकरण के बाद ID Token सर्वर को भेजता है और उपयोगकर्ता जानकारी दिखाता है। कोड Credential Manager के साथ अतुल्यकालिक कार्य के लिए कोरूटीन का उपयोग करता है।
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()
}सफल प्रमाणीकरण के बाद, ऐप को सत्यापन और सत्र निर्माण के लिए ID Token अपने सर्वर पर भेजना चाहिए। HTTPS का उपयोग करने और POST अनुरोध के मुख्य भाग में टोकन पास करने की अनुशंसा की जाती है। सर्वर अपना स्वयं का सत्र टोकन लौटाता है, जिसे क्लाइंट EncryptedSharedPreferences में संग्रहीत करता है। सर्वर पर प्रत्येक बाद के अनुरोध पर, आंतरिक टोकन का उपयोग किया जाता है, Google ID Token का नहीं।
पहली सामान्य त्रुटि SHA-1 प्रमाणपत्र बेमेल है। Google Cloud Console OAuth 2.0 Client ID को SHA-1 प्रमाणपत्र फ़िंगरप्रिंट से बाँधता है। यदि ऐप डिबग कुंजी से बनाया गया है लेकिन Client ID रिलीज़ कुंजी के लिए बनाया गया था, तो Google Sign-In त्रुटि 12501 (SIGN_IN_FAILED) लौटाएगा। समाधान: Google Cloud Console में दोनों SHA-1 फ़िंगरप्रिंट (डिबग और रिलीज़) जोड़ें या विकास के लिए एक Client ID और उत्पादन के लिए अलग Client ID का उपयोग करें।
दूसरी सामान्य समस्या गलत serverClientId है। डेवलपर अक्सर Credential Manager के serverClientId पैरामीटर में Android Client ID के बजाय वेब एप्लिकेशन Client ID का उपयोग करते हैं। Google को सर्वर सत्यापन के लिए ID Token उत्पन्न करने के लिए वेब क्लाइंट ID की आवश्यकता होती है। Android Client ID का उपयोग केवल प्रमाणीकरण के दौरान ऐप की पहचान करने के लिए किया जाता है। सुनिश्चित करें कि serverClientId Google Cloud Console में वेब एप्लिकेशन से मेल खाता है।
तीसरी त्रुटि रद्दीकरण हैंडलिंग को अनदेखा करना है। उपयोगकर्ता प्रमाणीकरण पूरा किए बिना Google Sign-In संवाद बंद कर सकता है। Credential Manager GetCredentialCancellationException फेंकता है जिसे अन्य त्रुटियों से अलग संभाला जाना चाहिए। कई डेवलपर सभी अपवादों को त्रुटियों के रूप में संभालते हैं, उपयोगकर्ता को “लॉगिन विफल” संदेश दिखाते हैं जब उपयोगकर्ता ने केवल ऑपरेशन रद्द किया था। सही हैंडलिंग: रद्द होने पर — कुछ न दिखाएँ, बस प्रारंभिक स्थिति में लौटें।
अक्सर पूछे जाने वाले प्रश्न
Android के लिए Credential Manager (AndroidX Credentials) और iOS के लिए Swift Package Manager के माध्यम से GIDSignIn SDK का उपयोग करने की अनुशंसा की जाती है। Credential Manager Google द्वारा समर्थित एक आधुनिक API है जो Google Sign-In, Passkeys और पासवर्ड लॉगिन को एक ही इंटरफ़ेस में जोड़ता है। अप्रचलित GoogleSignInClient (com.google.android.gms:auth) अब उपयोग के लिए अनुशंसित नहीं है।
ID Token एक JWT है जिसमें उपयोगकर्ता की जानकारी (नाम, ईमेल, अद्वितीय ID) होती है। इसका उपयोग ऐप के सर्वर साइड पर प्रमाणीकरण के लिए किया जाता है। Access Token Google API (Google Drive, Calendar) तक पहुँच के लिए एक अपारदर्शी स्ट्रिंग है। ID Token 1 घंटे तक जीवित रहता है, Access Token भी 1 घंटे तक जीवित रहता है लेकिन Refresh Token के माध्यम से नवीनीकृत किया जा सकता है।
तकनीकी रूप से हाँ, लेकिन यह सुरक्षित नहीं है। यदि आप केवल क्लाइंट पर ID Token सत्यापित करते हैं, तो हमलावर ऐप को डीकंपाइल कर सकता है और सत्यापन तर्क निकाल सकता है। Google की सार्वजनिक कुंजियों का उपयोग करके सर्वर-साइड सत्यापन गारंटी देता है कि टोकन वास्तव में Google द्वारा जारी किया गया था और जाली नहीं है। बिना सर्वर वाले ऐप्स के लिए, Firebase Authentication का उपयोग करें।
त्रुटि 12501 (SIGN_IN_FAILED) तब होती है जब ऐप का SHA-1 प्रमाणपत्र Google Cloud Console में निर्दिष्ट से मेल नहीं खाता। समाधान: कंसोल में डिबग प्रमाणपत्र (Android Studio से) और रिलीज़ प्रमाणपत्र से SHA-1 जोड़ें। यह भी जाँचें कि कंसोल में पैकेज नाम build.gradle से मेल खाता है। बदलाव के बाद, प्रचारित होने में 24 घंटे तक लग सकते हैं।
नहीं, Google Sign-In को Google सर्वर से संपर्क करने के लिए इंटरनेट कनेक्शन की आवश्यकता है। यदि डिवाइस ऑफ़लाइन है, तो सत्र कैशिंग तंत्र का उपयोग करें: सफल लॉगिन के बाद, EncryptedSharedPreferences में टोकन सहेजें और अगले लॉन्च पर इसकी वैधता जाँचें। जब नेटवर्क न हो, तो सहेजा गया डेटा दिखाएँ और बाद में लॉगिन करने का सुझाव दें।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें