OAuth 2.0 को लागू करने के बाद, OAuth-आधारित App Flip को वैकल्पिक रूप से कॉन्फ़िगर किया जा सकता है. इसकी मदद से, आपके Android उपयोगकर्ता, पुष्टि करने वाले सिस्टम में अपने खातों को अपने Google खातों से तुरंत लिंक कर सकते हैं. नीचे दिए सेक्शन में बताया गया है कि smart home कार्रवाई के लिए App Flip को कैसे डिज़ाइन और लागू किया जा सकता है.
डिज़ाइन से जुड़े दिशा-निर्देश
इस सेक्शन में, ऐप्लिकेशन की फ़्लिप स्क्रीन से खाता जोड़ने की सहमति वाली स्क्रीन के लिए, डिज़ाइन से जुड़ी ज़रूरी शर्तों और सुझावों के बारे में बताया गया है. जब Google आपके ऐप्लिकेशन पर कॉल करता है, तब आपका ऐप्लिकेशन उपयोगकर्ता को सहमति वाली स्क्रीन दिखाता है.
ज़रूरी शर्तें
- आपको बताना होगा कि उपयोगकर्ता का खाता Google से जोड़ा जा रहा है, न कि किसी खास Google प्रॉडक्ट, जैसे कि Google Home या Google Assistant से.
सुझाव
हमारा सुझाव है कि आप ये काम करें:
Google की निजता नीति दिखाएं. सहमति वाली स्क्रीन पर Google की निजता नीति का लिंक शामिल करें.
शेयर किया जाने वाला डेटा. उपयोगकर्ताओं को साफ़ तौर पर और कम शब्दों में जानकारी दें. उन्हें बताएं कि Google को उनका कौनसा डेटा चाहिए और क्यों.
कॉल-टू-ऐक्शन मिटाएं. अपनी सहमति वाली स्क्रीन पर साफ़ तौर पर कॉल-टू-ऐक्शन डालें, जैसे कि "सहमत हैं और लिंक करें". इसकी वजह यह है कि उपयोगकर्ताओं को यह समझना ज़रूरी होता है कि उन्हें अपने खातों को जोड़ने के लिए, Google के साथ कौनसा डेटा शेयर करना चाहिए.
सदस्यता रद्द करने की सुविधा. अगर उपयोगकर्ता लिंक नहीं करना चाहते हैं, तो उन्हें वापस जाने या रद्द करने का तरीका दिया जा सकता है.
अनलिंक करने की क्षमता. उपयोगकर्ताओं को ऐसा सिस्टम उपलब्ध कराएं जिसे वे अलग कर सकते हैं, जैसे कि अपने प्लैटफ़ॉर्म पर अपने खाते की सेटिंग का यूआरएल. इसके अलावा, आप Google खाते का लिंक भी शामिल कर सकते हैं, जहां उपयोगकर्ता अपने लिंक किए गए खाते को मैनेज कर सकते हैं.
उपयोगकर्ता खाता बदलने की सुविधा. उपयोगकर्ताओं को अपने खाते(खातों) को स्विच करने का तरीका बताएं. यह खास तौर पर तब फ़ायदेमंद होता है, जब उपयोगकर्ता एक से ज़्यादा खाते इस्तेमाल करते हैं.
- अगर किसी उपयोगकर्ता को खातों को बदलने के लिए, सहमति वाली स्क्रीन को बंद करना होगा, तो Google को वापस पाने लायक गड़बड़ी भेजें, ताकि उपयोगकर्ता OAuth लिंकिंग और इंप्लिसिट फ़्लो के साथ, पसंद के खाते में साइन इन कर सके.
अपना लोगो शामिल करें. सहमति वाली स्क्रीन पर अपनी कंपनी का लोगो दिखाएं. लोगो बनाने के लिए, स्टाइल के दिशा-निर्देशों का इस्तेमाल करें. अगर आपको Google का लोगो भी दिखाना है, तो लोगो और ट्रेडमार्क देखें.

OAuth पर आधारित ऐप्लिकेशन फ़्लिप के लिए सेट अप करें
नीचे दिए गए सेक्शन में, OAuth-आधारित ऐप्लिकेशन फ़्लिप की ज़रूरी शर्तों के बारे में बताया गया है. साथ ही, कार्रवाइयों वाले कंसोल में ऐप्लिकेशन फ़्लिप प्रोजेक्ट को कॉन्फ़िगर करने का तरीका भी बताया गया है.
स्मार्ट होम ऐक्शन बनाएं और OAuth 2.0 सर्वर सेट अप करें
App Flip को कॉन्फ़िगर करने से पहले, आपको ये काम करने होंगे:
- OAuth 2.0 सर्वर सेट अप करना. OAuth सर्वर सेट अप करने के बारे में ज़्यादा जानकारी के लिए, OAuth 2.0 सर्वर लागू करना लेख पढ़ें.
- कोई कार्रवाई बनाएं. किसी कार्रवाई को बनाने के लिए, ऐक्शन प्रोजेक्ट बनाएं में दिए गए निर्देशों का पालन करें.
Actions कंसोल में App Flip कॉन्फ़िगर करें
नीचे दिए गए सेक्शन में, Actions कंसोल में App Flip को कॉन्फ़िगर करने का तरीका बताया गया है.
- OAuth क्लाइंट की जानकारी में जाकर, सभी फ़ील्ड भरें. (अगर ऐप्लिकेशन फ़्लिप की सुविधा काम नहीं करती है, तो सामान्य OAuth का इस्तेमाल फ़ॉलबैक के तौर पर किया जाता है.)
- खाता जोड़ने के लिए अपने ऐप्लिकेशन का इस्तेमाल करें (ज़रूरी नहीं) में जाकर, Android के लिए चालू करें पर सही का निशान लगाएं.
- नीचे दिए गए फ़ील्ड भरें:
- ऐप्लिकेशन आईडी. ऐप्लिकेशन आईडी एक यूनीक आईडी होता है, जिसे आप अपने ऐप्लिकेशन के लिए सेट करते हैं.
- ऐप्लिकेशन हस्ताक्षर. Android ऐप्लिकेशन इंस्टॉल किए जाने से पहले, उन्हें सार्वजनिक कुंजी वाले सर्टिफ़िकेट से साइन किया जाना चाहिए. अपने ऐप्लिकेशन के हस्ताक्षर पाने के बारे में जानकारी के लिए, अपने क्लाइंट की पुष्टि करना देखें.
- अनुमति का इंटेंट. इस फ़ील्ड में ऐसी स्ट्रिंग डालें जो आपके इंटेंट ऐक्शन के बारे में बताती हो.
- अगर आपको क्लाइंट को विकल्प के तौर पर कॉन्फ़िगर करना है, तो दायरा जोड़ें और अपना क्लाइंट कॉन्फ़िगर करें (ज़रूरी नहीं) में जाकर, दायरा जोड़ें पर क्लिक करें.
- Save पर क्लिक करें.
अपने Android ऐप्लिकेशन में ऐप्लिकेशन की सेटिंग बदलना
ऐप्लिकेशन की सेटिंग बदलने के लिए, आपको अपने ऐप्लिकेशन में उपयोगकर्ता के ऑथराइज़ेशन कोड में बदलाव करना होगा. ऐसा करने पर ही, Google के डीप लिंक को स्वीकार किया जा सकेगा.
OAuth आधारित ऐप्लिकेशन फ़्लिप लिंकिंग (ऐप्लिकेशन फ़्लिप) की मदद से आपका Android ऐप्लिकेशन, Google खाता जोड़ने के फ़्लो में शामिल हो जाता है. पारंपरिक खाता जोड़ने के फ़्लो के लिए, उपयोगकर्ता को ब्राउज़र में अपने क्रेडेंशियल डालने होंगे. ऐप्लिकेशन फ़्लिप करने से उपयोगकर्ता को आपके Android ऐप्लिकेशन में साइन-इन करने की सुविधा मिलती है, जिससे आप मौजूदा अनुमतियों का फ़ायदा उठा सकते हैं. अगर उपयोगकर्ता ने आपके ऐप्लिकेशन में साइन इन किया हुआ है, तो उन्हें अपना खाता जोड़ने के लिए अपने क्रेडेंशियल दोबारा डालने की ज़रूरत नहीं है. अपने Android ऐप्लिकेशन पर ऐप्लिकेशन फ़्लिप लागू करने के लिए, कोड में बहुत कम बदलाव करने होंगे.
इस दस्तावेज़ में, आप अपने Android ऐप्लिकेशन में बदलाव करने का तरीका जानते हैं.
सैंपल आज़माएं
ऐप्लिकेशन फ़्लिप लिंक करने की सुविधा सैंपल ऐप्लिकेशन Android पर ऐप्लिकेशन फ़्लिप के साथ काम करने वाले खाते को जोड़ने का इंटिग्रेशन दिखाती है. आप Google मोबाइल ऐप्लिकेशन से आने वाले ऐप्लिकेशन फ़्लिप इंटेंट का जवाब देने का तरीका पुष्टि करने के लिए, इस ऐप्लिकेशन का इस्तेमाल कर सकते हैं.
नमूना ऐप्लिकेशन को Android के लिए ऐप्लिकेशन फ़्लिप टेस्ट टूल के साथ इंटिग्रेट करने के लिए पहले से कॉन्फ़िगर किया गया है. इसका इस्तेमाल करके, Google से खाता जोड़ने की सेटिंग को कॉन्फ़िगर करने से पहले, ऐप्लिकेशन के साथ अपने Android ऐप्लिकेशन के इंटिग्रेशन की पुष्टि की जा सकती है. यह ऐप्लिकेशन, ऐप्लिकेशन फ़्लिप की सुविधा चालू होने पर Google मोबाइल ऐप्लिकेशन के ट्रिगर किए गए इंटेंट की नकल करता है.
यह रिपोर्ट कैसे दिखेगी
ऐप्लिकेशन फ़्लिप इंटिग्रेशन के लिए यह तरीका अपनाएं:
- Google app यह जांच करता है कि आपका ऐप्लिकेशन, डिवाइस में पैकेज का नाम इस्तेमाल करके इंस्टॉल किया गया है या नहीं.
- Google app, पैकेज साइन की जांच का इस्तेमाल करके, इस बात की पुष्टि करता है कि इंस्टॉल किया गया ऐप्लिकेशन सही है या नहीं.
- Google app पर, आपके ऐप्लिकेशन में कोई खास गतिविधि शुरू करने के लिए इंटेंट बनाया जाता है. इस इंटेंट में जोड़ने के लिए ज़रूरी अतिरिक्त डेटा शामिल है. यह Android फ़्रेमवर्क के ज़रिए इस इंटेंट का समाधान करके, यह यह देखने के लिए भी जांच करता है कि आपका ऐप्लिकेशन ऐप्लिकेशन फ़्लिप का समर्थन करता है या नहीं.
- आपका ऐप्लिकेशन इस बात की पुष्टि करता है कि अनुरोध Google app से किया गया है. इसके लिए, आपका ऐप्लिकेशन, पैकेज के हस्ताक्षर और दिए गए क्लाइंट आईडी की जांच करता है.
- आपका ऐप्लिकेशन आपके OAuth 2.0 सर्वर से अनुमति देने के लिए कोड का अनुरोध करता है. इस फ़्लो के आखिर में, यह ऑथराइज़ेशन कोड या Google app में गड़बड़ी दिखाता है.
- नतीजे के तौर पर दिखने वाला Google app, खाता लिंक करने की प्रोसेस जारी रखता है. अगर ऑथराइज़ेशन कोड दिया जाता है, तो टोकन एक्सचेंज सर्वर-टू-सर्वर के जैसा ही होता है. यह ठीक वैसा ही होता है जैसा ब्राउज़र पर आधारित OAuth लिंकिंग फ़्लो में होता है.
ऐप्लिकेशन फ़्लिप की सुविधा के लिए, अपने Android ऐप्लिकेशन में बदलाव करें
ऐप्लिकेशन फ़्लिप की सुविधा इस्तेमाल करने के लिए, अपने Android ऐप्लिकेशन में कोड में ये बदलाव करें:
अपनी
AndroidManifest.xml
फ़ाइल में<intent-filter>
को एक कार्रवाई स्ट्रिंग के साथ जोड़ें, जो ऐप्लिकेशन फ़्लिप इंटेंट फ़ील्ड में आपकी डाली गई वैल्यू से मेल खाता हो.<activity android:name="AuthActivity"> <!-- Handle the app flip intent --> <intent-filter> <action android:name="INTENT_ACTION_FROM_CONSOLE"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
कॉल करने वाले ऐप्लिकेशन के हस्ताक्षर की पुष्टि करें.
private fun verifyFingerprint( expectedPackage: String, expectedFingerprint: String, algorithm: String ): Boolean { callingActivity?.packageName?.let { if (expectedPackage == it) { val packageInfo = packageManager.getPackageInfo(it, PackageManager.GET_SIGNATURES) val signatures = packageInfo.signatures val input = ByteArrayInputStream(signatures[0].toByteArray()) val certificateFactory = CertificateFactory.getInstance("X509") val certificate = certificateFactory.generateCertificate(input) as X509Certificate val md = MessageDigest.getInstance(algorithm) val publicKey = md.digest(certificate.encoded) val fingerprint = publicKey.joinToString(":") { "%02X".format(it) } return (expectedFingerprint == fingerprint) } } return false }
इंटेंट पैरामीटर से क्लाइंट आईडी निकालें और पुष्टि करें कि क्लाइंट आईडी अनुमानित मान से मेल खाता है.
private const val EXPECTED_CLIENT = "<client-id-from-actions-console>" private const val EXPECTED_PACKAGE = "<google-app-package-name>" private const val EXPECTED_FINGERPRINT = "<google-app-signature>" private const val ALGORITHM = "SHA-256" ... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val clientId = intent.getStringExtra("CLIENT_ID") if (clientId == EXPECTED_CLIENT && verifyFingerprint(EXPECTED_PACKAGE, EXPECTED_FINGERPRINT, ALGORITHM)) { // ...authorize the user... } }
अनुमति देने के बाद, वह कोड वापस Google को दे दें.
// Successful result val data = Intent().apply { putExtra("AUTHORIZATION_CODE", authCode) } setResult(Activity.RESULT_OK, data) finish()
अगर कोई गड़बड़ी हुई है, तो उसके बजाय गड़बड़ी का नतीजा दिखाएं.
// Error result val error = Intent().apply { putExtra("ERROR_TYPE", 1) putExtra("ERROR_CODE", 1) putExtra("ERROR_DESCRIPTION", "Invalid Request") } setResult(-2, error) finish()
लॉन्च इंटेंट का कॉन्टेंट
आपका ऐप्लिकेशन लॉन्च करने वाले Android इंटेंट में ये फ़ील्ड शामिल हैं:
CLIENT_ID
(String
): Googleclient_id
आपके ऐप्लिकेशन के साथ रजिस्टर किया गया.SCOPE
(String[]
): दायरों की एक सूची का अनुरोध किया गया.REDIRECT_URI
(String
): रीडायरेक्ट यूआरएल.
रिस्पॉन्स डेटा का कॉन्टेंट
Google app पर सेव किए गए डेटा को आपके ऐप्लिकेशन में सेट किया जाता है. इसके लिए, setResult()
को कॉल किया जाता है.
इस डेटा में ये चीज़ें शामिल हैं:
AUTHORIZATION_CODE
(String
): ऑथराइज़ेशन कोड की वैल्यू.resultCode
(int
): इस प्रोसेस की सफलता या असफलता की जानकारी देता है और इनमें से कोई एक वैल्यू लेता है:Activity.RESULT_OK
: इससे पता चलता है कि पुष्टि हो चुकी है और पुष्टि करने के लिए कोड भेजा गया है.Activity.RESULT_CANCELLED
: सिग्नल से यह पता चलता है कि उपयोगकर्ता ने प्रोसेस रद्द कर दी है. इस मामले में, Google app आपके अनुमति वाले यूआरएल का इस्तेमाल करके, खाता जोड़ने की कोशिश करेगा.-2
: यह बताता है कि कोई गड़बड़ी हुई है. अलग-अलग तरह की गड़बड़ियों के बारे में नीचे बताया गया है.
ERROR_TYPE
(int
): गड़बड़ी किस तरह की है, इनमें से कोई एक वैल्यू होती है:1
: वापस पाने में होने वाली गड़बड़ी: Google app, अनुमति देने वाले यूआरएल का इस्तेमाल करके, खाता जोड़ने की कोशिश करेगा.2
: वापस न पाई जा सकने वाली गड़बड़ी: Google app को खाता जोड़ने की प्रोसेस रद्द कर दी गई है.3
: अनुरोध पैरामीटर अमान्य हैं या मौजूद नहीं हैं.
ERROR_CODE
(int
): एक पूर्णांक, जो गड़बड़ी की तरह बताता है. हर गड़बड़ी कोड का क्या मतलब होता है, यह देखने के लिए गड़बड़ी कोड की टेबल देखें.ERROR_DESCRIPTION
(String
, ज़रूरी नहीं): गड़बड़ी की जानकारी देने वाला ऐसा मैसेज जो इंसान पढ़ सके.
resultCode == Activity.RESULT_OK
के लिए, AUTHORIZATION_CODE
की वैल्यू
ज़रूरी है. अन्य सभी मामलों में, AUTHORIZATION_CODE
का मान खाली होना चाहिए. अगर resultCode == -2
है, तो ERROR_TYPE
वैल्यू के पॉप्युलेट होने की संभावना होती है.
गड़बड़ी कोड की टेबल
नीचे दी गई टेबल में अलग-अलग गड़बड़ी कोड दिखाए गए हैं. इनमें से हर कोड, वापस पाने लायक या वापस न पाया जा सकने वाला गड़बड़ी का कोड है:
गड़बड़ी का कोड | लिंक | वापस पाया जा सकता है | वापस नहीं पाया जा सकता |
---|---|---|---|
1 |
INVALID_REQUEST |
✔ | |
2 |
NO_INTERNET_CONNECTION |
✔ | |
3 |
OFFLINE_MODE_ACTIVE |
✔ | |
4 |
CONNECTION_TIMEOUT |
✔ | |
5 |
INTERNAL_ERROR |
✔ | |
6 |
AUTHENTICATION_SERVICE_UNAVAILABLE |
✔ | |
8 |
CLIENT_VERIFICATION_FAILED |
✔ | |
9 |
INVALID_CLIENT |
✔ | |
10 |
INVALID_APP_ID |
✔ | |
11 |
INVALID_REQUEST |
✔ | |
12 |
AUTHENTICATION_SERVICE_UNKNOWN_ERROR |
✔ | |
13 |
AUTHENTICATION_DENIED_BY_USER |
✔ | |
14 |
CANCELLED_BY_USER |
✔ | |
15 |
FAILURE_OTHER |
✔ | |
16 |
USER_AUTHENTICATION_FAILED |
✔ |
सभी गड़बड़ी कोड के लिए, आपको setResult
के ज़रिए गड़बड़ी का नतीजा दिखाना होगा, ताकि यह पक्का हो सके कि सही फ़ॉलबैक ट्रिगर हो.
अपने डिवाइस पर, ऐप्लिकेशन की सेटिंग बदलें
आपने कंसोल पर ऐप्लिकेशन फ़्लिप को कॉन्फ़िगर कर लिया है और अपने ऐप्लिकेशन में कॉन्फ़िगर कर लिया है. इसलिए, अब आप अपने मोबाइल डिवाइस पर ऐप्लिकेशन की सेटिंग बदल सकते हैं. App Flip की जांच करने के लिए, Google Assistant या Google Home ऐप्लिकेशन का इस्तेमाल किया जा सकता है.
Assistant ऐप्लिकेशन से ऐप्लिकेशन की सेटिंग बदलने के लिए, यह तरीका अपनाएं:
- Actions कंसोल पर जाएँ और अपना प्रोजेक्ट चुनें.
- सबसे ऊपर मौजूद नेविगेशन में, जांच करें पर क्लिक करें.
- Assistant ऐप्लिकेशन से, खाता जोड़ने का फ़्लो ट्रिगर करें:
- Google Assistant ऐप्लिकेशन खोलें.
- सेटिंग पर क्लिक करें.
- Assistant टैब पर, होम कंट्रोल पर क्लिक करें.
- जोड़ें(+) पर क्लिक करें.
- सेवा देने वाली कंपनियों की सूची में से, अपनी कार्रवाई चुनें. इसे सूची में "[test]" से शुरू किया जाएगा. सूची से अपनी [test] कार्रवाई चुनने पर, आपका ऐप्लिकेशन खुल जाएगा.
- पुष्टि करें कि आपका ऐप्लिकेशन लॉन्च किया गया हो. साथ ही, अनुमति देने की प्रक्रिया की जांच शुरू करें.
Home ऐप्लिकेशन से, ऐप्लिकेशन की सेटिंग बदलने के लिए यह तरीका अपनाएं:
- Actions कंसोल पर जाएँ और अपना प्रोजेक्ट चुनें.
- सबसे ऊपर मौजूद नेविगेशन में, जांच करें पर क्लिक करें.
- Home ऐप्लिकेशन से खाता जोड़ने के फ़्लो को ट्रिगर करें:
- Google Home ऐप्लिकेशन खोलें.
- + बटन पर क्लिक करें.
- डिवाइस सेट अप करें पर क्लिक करें.
- क्या पहले से कुछ सेट अप किया हुआ है? पर क्लिक करें
- सेवा देने वाली कंपनियों की सूची में से, अपना स्मार्ट होम ऐक्शन चुनें. इसे सूची में "[test]" से शुरू किया जाएगा. सूची से अपनी [test] कार्रवाई चुनने पर, आपका ऐप्लिकेशन खुल जाएगा.
- पुष्टि करें कि आपका ऐप्लिकेशन लॉन्च किया गया हो. साथ ही, अनुमति देने की प्रक्रिया की जांच शुरू करें.