खाता जोड़ना सीधे आपके मोबाइल ऐप्लिकेशन में पूरा किया जा सकता है. इससे आपके उपयोगकर्ता अपने Google खाते से आपकी सेवा का खाता जोड़ सकते हैं. जोड़ा गया लिंक, Google को उस डेटा का ऐक्सेस देता है जिसे उपयोगकर्ता शेयर करने की सहमति देता है.
इस तरीके से, खाते लिंक करने की परफ़ॉर्मेंस बेहतर होती है. ऐसा इसलिए, क्योंकि इसमें उपयोगकर्ताओं को Assistant से बातचीत करने के बजाय, आपके ऐप्लिकेशन के जाने-पहचाने कॉन्टेक्स्ट में शामिल किया जाता है. इसे उपयोगकर्ता के ऑनबोर्डिंग, सेटिंग, और ऐप्लिकेशन के अन्य प्लैटफ़ॉर्म में इंटिग्रेट किया जा सकता है. इससे, Google Assistant Action को खोजने और उससे जुड़ने के मौके मिलते हैं. उदाहरण के लिए, लिंक करने के बाद उपयोगकर्ता को सीधे अपनी कार्रवाई पर ले जाने का विकल्प दिया जा सकता है.
उपयोगकर्ताओं को मिलने वाले फ़ायदों में ये शामिल हैं:
- उपयोगकर्ता आपके ऐप्लिकेशन में खाता जोड़ने की प्रोसेस शुरू कर सकते हैं और उसे पूरा कर सकते हैं. इस तरह के माहौल के बारे में वे पहले से जानते हैं.
- उपयोगकर्ताओं को लॉगिन क्रेडेंशियल की ज़रूरत नहीं है, क्योंकि वे डिवाइस और आपके मोबाइल ऐप्लिकेशन में पहले ही पुष्टि कर चुके हैं.
डेवलपर के लिए ये फ़ायदे हैं:
- अपने मोबाइल ऐप्लिकेशन में खाता लिंक करने की सुविधा का प्रचार और शुरुआत करना , जिससे जुड़ाव और खातों की संख्या बढ़ गई है.
- कन्वर्ज़न मानक में बढ़ोतरी, क्योंकि उपयोगकर्ता स्टैंडर्ड वेब पर आधारित OAuth फ़्लो के मुकाबले कम चरणों में, लिंक करने की प्रोसेस पूरी कर सकते हैं.
- आपके प्लैटफ़ॉर्म (Android) से लिंक लागू करने के लिए कम इंजीनियरिंग कोशिश करनी होगी, क्योंकि यह फ़्लो आपके मौजूदा OAuth2.0 कोड लागू करने के तरीके का फ़ायदा उठाता है. यह मानते हुए कि आपने पहले ही इसे लागू कर लिया है.
- ड्रॉप-ऑफ़ दरें कम की गई है, क्योंकि उपयोगकर्ताओं को अपने लॉगिन क्रेडेंशियल दोबारा डालने की ज़रूरत नहीं है और वे कम चरणों में यह प्रक्रिया पूरी कर सकते हैं. ड्रॉप-ऑफ़ दरें, फ़्लो में 80% तक भी हो सकती हैं, जहां उपयोगकर्ताओं को अपने 'साइन इन' क्रेडेंशियल डालने या दर्ज करने की ज़रूरत होती है.
यह कैसे काम करता है
आपके प्लैटफ़ॉर्म से लिंक करने की प्रोसेस, इन चरणों में पूरी होती है:
- उपयोगकर्ता, आपके मोबाइल ऐप्लिकेशन पर लिंक करने के ट्रिगर पर क्लिक करेगा या उसे टॉगल करेगा.
- उपयोगकर्ता, लिंक करने के लिए Google खाता चुनता है.
- उपयोगकर्ता, लिंक करने के लिए डिवाइस पर मौजूद कोई Google खाता चुनता है या किसी नए खाते से साइन इन करता है
- उपयोगकर्ता को Google की ओर से होस्ट की गई, सहमति देने वाली स्क्रीन दिखती हैं. उसे लिंक करने की प्रोसेस जारी रखने के लिए सहमति देनी होती है या प्रोसेस रोकने के लिए, 'रद्द करें' पर क्लिक करना होता है.
- उपयोगकर्ता को, सहमति देने वाली आपकी स्क्रीन दिखती है. उसे लिंक करने की प्रोसेस जारी रखने के लिए सहमति देनी होती है या प्रोसेस रोकने के लिए, 'रद्द करें' पर क्लिक करना होता है.
- उपयोगकर्ता के खाते को आपकी सेवा और उसके Google खाते से लिंक किया जाता है.
पहली इमेज. आपके प्लैटफ़ॉर्म से लिंक करने की प्रोसेस
ज़रूरी शर्तें
अपने प्लैटफ़ॉर्म से लिंक करने की सुविधा लागू करने के लिए, आपके पास ये चीज़ें होनी चाहिए:
- कोई Android ऐप्लिकेशन.
- OAuth 2.0 का सर्वर, जिसका मालिकाना हक आपके पास हो, जिसे मैनेज और मेंटेन किया जाता हो. साथ ही, जो OAuth 2.0 के ऑथराइज़ेशन कोड फ़्लो के साथ काम करता हो.
सेटअप
यहां दिए गए चरण पूरे करने से पहले, आपको खाता लिंक करने के लिए रजिस्ट्रेशन की प्रोसेस पूरी करनी होगी.
डेवलपमेंट एनवायरमेंट सेट अप करना
अपने डेवलपमेंट होस्ट पर, Google Play services का नया वर्शन पाएं:
- Android SDK Manager खोलें.
**एसडीके टूल** में जाकर, **Google Play services** ढूंढें.
अगर इन पैकेज का स्टेटस 'इंस्टॉल नहीं किया गया' है, तो दोनों को चुनें और पैकेज इंस्टॉल करें पर क्लिक करें.
अपने ऐप्लिकेशन को कॉन्फ़िगर करना
अपने प्रोजेक्ट-लेवल की
build.gradleफ़ाइल में,buildscriptऔरallprojects, दोनों सेक्शन में Google की Maven रिपॉज़िटरी शामिल करें.buildscript { repositories { google() } } allprojects { repositories { google() } }अपने मॉड्यूल की ऐप्लिकेशन-लेवल की Gradle फ़ाइल में, “Google से लिंक करें” एपीआई के लिए डिपेंडेंसी जोड़ें. आम तौर पर, यह फ़ाइल
app/build.gradleहोती है:dependencies { implementation 'com.google.android.gms:play-services-auth:21.6.0' }
अपने प्लैटफ़ॉर्म से लिंक करने की सुविधा जोड़ना
आपके प्लैटफ़ॉर्म से लिंक करने की प्रोसेस पूरी होने पर, आपकी सेवा की ओर से दिया गया ऐक्सेस टोकन, Google सेव कर लेगा. उपयोगकर्ता को टोकन देने से पहले, उससे सहमति लेना ज़रूरी है.
उपयोगकर्ता से सहमति पाने और Google Play services SDK टूल की मदद से, ऑथराइज़ेशन कोड टोकन देने के लिए, यह तरीका अपनाएं:
एक PendingIntent बनाएं, जो सहमति देने वाली आपकी गतिविधि को लॉन्च कर सके. सहमति देने वाली गतिविधि, Play सेवाएं API की मदद से लॉन्च की जाती है. एपीआई को कॉल करते समय, आपको एक
PendingIntentदेना होगा. इसे समझने के लिए,consentPendingIntentकहा जाएगाKotlin
// Build a PendingIntent that can launch the consent activity val consentPendingIntent = buildConsentPendingIntent()Java
// Build a PendingIntent that can launch your consent activity PendingIntent consentPendingIntent = buildConsentPendingIntent();सहमति के इंटेंट को मैनेज करने के लिए, उससे जुड़ी गतिविधि बनाएं
Kotlin
class ConsentActivity : AppCompatActivity private fun onConsentAccepted() { // Obtain a token (for simplicity, we’ll ignore the async nature // of the following call) val token = getToken() val intent = Intent() .putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN, token) setResult(Activity.RESULT_OK, intent) finish() } private fun onConsentRejectedOrCanceled() { setResult(Activity.RESULT_CANCELED) finish() }Java
public class ConsentActivity extends AppCompatActivity { ... private void onConsentAccepted() { // Obtain a token (for simplicity, we’ll ignore the async nature of // the following call String token = getToken(); Intent intent = new Intent(); intent.putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN, token); setResult(Activity.RESULT_OK, intent); finish(); } private void onConsentRejectedOrCanceled() { setResult(Activity.RESULT_CANCELED, null); finish(); } }हम मानते हैं कि अगर उपयोगकर्ता सहमति देता है, तो
onConsentAccpeted()और अगर सहमति नहीं देता है या रद्द करता है, तोonConsentRejectedOrCanceled()तरीके कॉल किए जाते हैं.टोकन सेव करने के लिए अनुरोध बनाएं. साथ ही, कॉन्फ़िगरेशन के अन्य पैरामीटर के अलावा, ऊपर पहले चरण में बनाया गया
PendingIntentपास करें.Kotlin
// Create an ActivityResultLauncher which registers a callback for the // Activity result contract val activityResultLauncher = registerForActivityResult( ActivityResultContracts.StartIntentSenderForResult()) { result -> if (result.resultCode == RESULT_OK) { // Successfully finished the flow and saved the token } else { // Flow failed, for example the user may have canceled the flow } } // Build token save request val request = SaveAccountLinkingTokenRequest.builder() .setTokenType(SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE) .setConsentPendingIntent(consentPendingIntent) .setServiceId("service-id-of-and-defined-by-developer") //Set the scopes that the token is valid for on your platform .setScopes(scopes) .build() // Launch consent activity and retrieve token Identity.getCredentialSavingClient(this) .saveAccountLinkingToken(request) .addOnSuccessListener( saveAccountLinkingTokenResult -> { if (saveAccountLinkingTokenResult.hasResolution()) { val pendingIntent = saveAccountLinkingTokenResult .getPendingIntent() val intentSenderRequest = IntentSenderRequest .Builder(pendingIntent).build() activityResultLauncher.launch(intentSenderRequest) } else { // This should not happen, let’s log this Log.e(TAG, "Failed to save token"); } }) .addOnFailureListener(e -> Log.e(TAG, “Failed to save token”, e))Java
// Create an ActivityResultLauncher which registers a callback for the // Activity result contract ActivityResultLauncher<IntentSenderRequest> activityResultLauncher = registerForActivityResult(new ActivityResultContracts .StartIntentSenderForResult(), result -> { if (result.getResultCode() == RESULT_OK) { // Successfully finished the flow and saved the token } else { // Flow failed, for example the user may have canceled the flow } }); // Build token save request SaveAccountLinkingTokenRequest request = SaveAccountLinkingTokenRequest.builder() .setTokenType( SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE) .setConsentPendingIntent(consentPendingIntent) .setServiceId("service-id-of-and-defined-by-developer") //Set the scopes that the token is valid for on your platform .setScopes(scopes) .build(); // Launch consent activity and retrieve token Identity.getCredentialSavingClient(this) .saveAccountLinkingToken(request) .addOnSuccessListener( saveAccountLinkingTokenResult -> { if (saveAccountLinkingTokenResult.hasResolution()) { // Launch the resolution intent PendingIntent pendingIntent = saveAccountLinkingTokenResult.getPendingIntent(); IntentSenderRequest intentSenderRequest = new IntentSenderRequest.Builder(pendingIntent).build(); activityResultLauncher.launch(intentSenderRequest); } else { // This should not happen, let’s log this Log.e(TAG, "Failed to save token"); } }) .addOnFailureListener(e -> Log.e(TAG, "Failed to save token", e)); ```
ऊपर दिए गए चरणों से, उपयोगकर्ता को सहमति देने के लिए कहा जाता है और Google को ऑथराइज़ेशन कोड मिलता है.
सबसे सही तरीके
आपके ऐप्लिकेशन में, बटन, टॉगल या इसी तरह के किसी विज़ुअल एलिमेंट की मदद से, उपयोगकर्ता को लिंक करने का स्टेटस दिखना चाहिए.
पहली इमेज. लिंक करने के स्टेटस की सैंपल इमेज
लिंक करने की प्रोसेस पूरी होने के बाद, आपको उपयोगकर्ता को सूचना देनी चाहिए. जैसे, कोई टोस्ट दिखाना, टॉगल के स्टेटस में बदलाव करना या उपयोगकर्ता को लिंक करने की प्रोसेस पूरी होने वाले किसी अलग पेज पर रीडायरेक्ट करना.
आपको ऐप्लिकेशन में मौजूद उपयोगकर्ताओं को खाते लिंक करने के लिए कहना चाहिए. हमारा सुझाव है कि यह कार्रवाई, उन मज़बूत सिग्नल के आधार पर की जानी चाहिए जिनसे पता चलता हो कि खाते लिंक करने से उपयोगकर्ताओं को फ़ायदा होगा.
लिंक करने की प्रोसेस पूरी होने के बाद, आपको उपयोगकर्ताओं को यह उदाहरण देना चाहिए कि लिंक किए गए खाते का इस्तेमाल कैसे किया जाए. जैसे, अगर आपने किसी संगीत स्ट्रीमिंग सेवा को लिंक किया है, तो Google Assistant से संगीत चलाने के लिए कहें.
उपयोगकर्ताओं को लिंक किए गए खातों को मैनेज करने की अनुमति दें. इसमें, उन्हें खातों को अनलिंक करने का विकल्प भी दें. उन्हें लिंक किए गए Google खातों को मैनेज करने वाले पेज पर ले जाएं. यह पेज https://myaccount.google.com/accountlinking है.