अपने Android ऐप्लिकेशन में 'Google साइन-इन' को इंटिग्रेट करने के लिए, 'Google साइन-इन' कॉन्फ़िगर करें. साथ ही, अपने ऐप्लिकेशन के लेआउट में एक बटन जोड़ें, जिससे साइन-इन शुरू हो जाए.
शुरू करने से पहले
Google API Console प्रोजेक्ट कॉन्फ़िगर करें और अपना Android Studio प्रोजेक्ट सेट अप करें.
'Google साइन इन' और GoogleSignInClient ऑब्जेक्ट को कॉन्फ़िगर करें
अपनी साइन-इन गतिविधि के
onCreate
तरीके में, 'Google साइन-इन' को कॉन्फ़िगर करें, ताकि आपके ऐप्लिकेशन के लिए उपयोगकर्ता के डेटा का अनुरोध किया जा सके. उदाहरण के लिए, उपयोगकर्ता आईडी और प्रोफ़ाइल की बुनियादी जानकारी मांगने के लिए 'Google साइन-इन' को कॉन्फ़िगर करने के लिए,DEFAULT_SIGN_IN
पैरामीटर की मदद सेGoogleSignInOptions
ऑब्जेक्ट बनाएं. उपयोगकर्ताओं के ईमेल पतों का भी अनुरोध करने के लिए,requestEmail
विकल्प के साथGoogleSignInOptions
ऑब्जेक्ट बनाएं.// Configure sign-in to request the user's ID, email address, and basic // profile. ID and basic profile are included in DEFAULT_SIGN_IN. GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build();
अगर आपको Google API को ऐक्सेस करने के लिए अतिरिक्त दायरों का अनुरोध करना है, तो
requestScopes
की मदद से उनके बारे में बताएं. साइन इन करते समय, सबसे अच्छे उपयोगकर्ता अनुभव के लिए, सिर्फ़ उन दायरों का अनुरोध करें जो आपके ऐप्लिकेशन के कम से कम काम करने के लिए ज़रूरी हैं. किसी भी अतिरिक्त स्कोप का अनुरोध सिर्फ़ तब करें, जब आपको उनकी ज़रूरत हो. इससे आपके उपयोगकर्ताओं को उनकी कार्रवाई के बारे में जानकारी देने वाली स्क्रीन दिखेगी. अन्य दायरों का अनुरोध करना लेख पढ़ें.इसके बाद, साइन इन करने की गतिविधि के
onCreate
तरीके में, आपके तय किए गए विकल्पों के साथ एकGoogleSignInClient
ऑब्जेक्ट बनाएं.// Build a GoogleSignInClient with the options specified by gso. mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
यह देखना कि साइन इन किया हुआ कोई मौजूदा उपयोगकर्ता है या नहीं
अपनी गतिविधि के onStart
तरीके में, देखें कि किसी उपयोगकर्ता ने Google से आपके ऐप्लिकेशन में पहले से साइन इन किया हुआ है या नहीं.
// Check for existing Google Sign In account, if the user is already signed in // the GoogleSignInAccount will be non-null. GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this); updateUI(account);
अगर GoogleSignIn.getLastSignedInAccount
, null
के बजाय GoogleSignInAccount
ऑब्जेक्ट दिखाता है, तो इसका मतलब है कि उपयोगकर्ता ने Google से आपके ऐप्लिकेशन में पहले ही साइन इन किया हुआ है.
अपना यूज़र इंटरफ़ेस (यूआई) उसी के हिसाब से अपडेट करें—इसका मतलब है कि 'साइन-इन करें' बटन छिपाना, अपनी मुख्य गतिविधि
लॉन्च करना या फिर आपके ऐप्लिकेशन के लिए सही.
अगर GoogleSignIn.getLastSignedInAccount
null
दिखाता है, तो इसका मतलब है कि उपयोगकर्ता ने अब तक आपके ऐप्लिकेशन में Google से साइन इन नहीं किया है. 'Google साइन इन' बटन दिखाने के लिए, अपना यूज़र इंटरफ़ेस (यूआई) अपडेट करें.
अपने ऐप्लिकेशन में 'Google साइन इन' बटन जोड़ें
अपने ऐप्लिकेशन के लेआउट में
SignInButton
जोड़ें:<com.google.android.gms.common.SignInButton android:id="@+id/sign_in_button" android:layout_width="wrap_content" android:layout_height="wrap_content" />
ज़रूरी नहीं: अगर साइन-इन बटन वाली अपनी ऐसेट देने के बजाय, डिफ़ॉल्ट साइन-इन बटन ग्राफ़िक का इस्तेमाल किया जा रहा है, तो
setSize
तरीके से बटन के साइज़ को पसंद के मुताबिक बनाया जा सकता है.// Set the dimensions of the sign-in button. SignInButton signInButton = findViewById(R.id.sign_in_button); signInButton.setSize(SignInButton.SIZE_STANDARD);
Android की गतिविधि (उदाहरण के लिए,
onCreate
वाले तरीके में) में, क्लिक करने पर उपयोगकर्ता को साइन इन करने के लिए, अपने बटन काOnClickListener
रजिस्टर करें:findViewById(R.id.sign_in_button).setOnClickListener(this);
साइन इन करना शुरू करें
गतिविधि के
onClick
तरीके में, 'साइन-इन करें' बटन पर होने वाले टैप को हैंडल करें. इसके लिए,getSignInIntent
तरीके से साइन-इन इंटेंट बनाएं और इंटेंटstartActivityForResult
से शुरू करें.@Override public void onClick(View v) { switch (v.getId()) { case R.id.sign_in_button: signIn(); break; // ... } }
private void signIn() { Intent signInIntent = mGoogleSignInClient.getSignInIntent(); startActivityForResult(signInIntent, RC_SIGN_IN); }
इंटेंट शुरू करने पर, उपयोगकर्ता को साइन इन करने के लिए कोई Google खाता चुनने का प्रॉम्प्ट मिलता है. अगर आपने
profile
,email
, औरopenid
से बाहर के दायरों का अनुरोध किया है, तो उपयोगकर्ता को उन संसाधनों का ऐक्सेस देने के लिए भी कहा जाता है.उपयोगकर्ता के साइन इन करने के बाद, आपको गतिविधि के
onActivityResult
तरीके में, उपयोगकर्ता के लिएGoogleSignInAccount
ऑब्जेक्ट मिल सकता है.@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...); if (requestCode == RC_SIGN_IN) { // The Task returned from this call is always completed, no need to attach // a listener. Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data); handleSignInResult(task); } }
GoogleSignInAccount
ऑब्जेक्ट में, साइन इन करने वाले उपयोगकर्ता की जानकारी होती है, जैसे कि उपयोगकर्ता का नाम.private void handleSignInResult(Task<GoogleSignInAccount> completedTask) { try { GoogleSignInAccount account = completedTask.getResult(ApiException.class); // Signed in successfully, show authenticated UI. updateUI(account); } catch (ApiException e) { // The ApiException status code indicates the detailed failure reason. // Please refer to the GoogleSignInStatusCodes class reference for more information. Log.w(TAG, "signInResult:failed code=" + e.getStatusCode()); updateUI(null); } }
getEmail
की मदद से, उपयोगकर्ता का ईमेल पता,getId
के साथ, क्लाइंट-साइड पर इस्तेमाल के लिए Google आईडी, औरgetIdToken
की मदद से उपयोगकर्ता के लिए आईडी टोकन पाया जा सकता है. अगर आपको मौजूदा साइन इन उपयोगकर्ता को बैकएंड सर्वर पर पास करना है, तो अपने बैकएंड सर्वर पर आईडी टोकन भेजें और सर्वर पर टोकन की पुष्टि करें.