OAuth पर आधारित 'Google साइन इन' "व्यवस्थित करें" लिंक करने के कॉन्सेप्ट की गाइड

OAuth पर आधारित 'Google साइन इन' को "बेहतर तरीके से लिंक करने की सुविधा", 'Google साइन इन' को OAuth के आधार पर खाता लिंक करने की सबसे ज़्यादा सुविधा बनाती है. अगर आपकी सेट की गई कार्रवाई में, इस तरह के लिंक का इस्तेमाल किया जाता है, तो फ़्लो की शुरुआत 'Google साइन इन' से होती है. इससे यह पता चलता है कि आपके सिस्टम में उपयोगकर्ता की Google प्रोफ़ाइल की जानकारी मौजूद है या नहीं. अगर ऐसा नहीं होता है, तो स्टैंडर्ड OAuth फ़्लो शुरू होता है. इन दो तरह के लिंक को मिलाकर, आपके उपयोगकर्ता आपकी सेट की गई कार्रवाई में अपनी पहचान को Google या Google के अलावा किसी दूसरे खाते से लिंक कर सकते हैं. अगर वे चाहें, तो अपनी Google प्रोफ़ाइल की जानकारी का इस्तेमाल करके, नया खाता भी बना सकते हैं.

अगर यहां बताई गई बातों में से कोई भी बात लागू होती है, तो खाते को आसानी से लिंक करने के लिए व्यवस्थित तरीके से लिंक करने का सुझाव दिया जाता है:

  • आपकी सेट की गई कार्रवाई कई प्लैटफ़ॉर्म पर काम करती है. उदाहरण के लिए, अगर आपकी सेट की गई कार्रवाई किसी Android ऐप्लिकेशन के साथ काम करती है.
  • आपके पास पुष्टि करने का एक मौजूदा सिस्टम है और आपको उपयोगकर्ताओं को अपनी पहचान को Google से बाहर के खातों से लिंक करने की अनुमति देनी है. उदाहरण के लिए, अगर आपने लॉयल्टी प्रोग्राम की पेशकश की है और आपको यह पक्का करना है कि उपयोगकर्ता के मौजूदा खाते में जितने पॉइंट गायब न हों.

यह पुष्टि करने के लिए कि व्यवस्थित तरीके से लिंक करना आपके लिए सही है, खाता लिंक करने का तरीका चुनें पेज देखें.

मुख्य शब्द

व्यवस्थित तरीके से लिंक करने की सुविधा कैसे काम करती है, इसके बारे में पढ़ने से पहले, इन शब्दों के बारे में जानें:

  • Google आईडी टोकन: उपयोगकर्ता की पहचान से जुड़ा हस्ताक्षर किया गया दावा, जिसमें उपयोगकर्ता की Google प्रोफ़ाइल की बुनियादी जानकारी शामिल होती है. जैसे, उपयोगकर्ता का नाम, ईमेल पता, और प्रोफ़ाइल फ़ोटो. Google आईडी टोकन, JSON वेब टोकन (JWT) होता है. डिकोड किए गए टोकन का एक उदाहरण यहां दिया गया है:
{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The token's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
  "iat": 233366400,         // Unix timestamp of the token's creation time
  "exp": 233370000,         // Unix timestamp of the token's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "locale": "en_US"
}
  • user.verificationStatus: इस प्रॉपर्टी को सिस्टम सेट करता है. इससे पता चलता है कि मौजूदा सेशन में, पुष्टि किया गया उपयोगकर्ता मौजूद है या नहीं.

  • user.accountLinkingStatus: यह सिस्टम की सेट की गई प्रॉपर्टी है, जो यह बताती है कि मौजूदा सेशन में उपयोगकर्ता के पास लिंक की गई आइडेंटिटी है या नहीं.

  • खाता लिंक करने वाले सिस्टम का सीन: पहले से तय किया गया एक सीन, जो खाता लिंक करने के लिए पुष्टि करने वाले फ़्लो को लागू करता है. साथ ही, इसे इस्तेमाल के कुछ खास उदाहरणों के हिसाब से बनाया जा सकता है.

  • ऑथराइज़ेशन कोड फ़्लो: यह OAuth 2.0 फ़्लो है, जिसे व्यवस्थित तरीके से लिंक करने की सुविधा की मदद से लागू किया जा सकता है. इस फ़्लो के लिए दो एंडपॉइंट ज़रूरी हैं:

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

  • ऐक्सेस टोकन: एक ऐसा टोकन जो आपकी सेवा को, उपयोगकर्ता के डेटा के कुछ हिस्सों को ऐक्सेस करने की अनुमति देता है. ऐक्सेस टोकन, हर उपयोगकर्ता से जुड़े होते हैं.

  • रीफ़्रेश टोकन: एक टोकन जिसे कुछ समय के लिए इस्तेमाल होने वाले ऐक्सेस टोकन की समयसीमा खत्म होने के बाद नए ऐक्सेस टोकन से बदला जाता है.

ज़रूरी शर्तें

व्यवस्थित तरीके से लिंक करने के लिए, आपको इनकी ज़रूरत होगी:

  • OAuth 2.0 सर्वर
  • टोकन एक्सचेंज एंडपॉइंट

    किसी आईडी टोकन से Google के प्रोटोकॉल को अपने-आप लिंक करने और खाता बनाने में मदद करने के लिए, टोकन एक्सचेंज एंडपॉइंट बढ़ाना ज़रूरी है (यानी इस एंडपॉइंट के अनुरोध में intent=get और intent=create पैरामीटर जोड़ें).

यह सुविधा कैसे काम करती है

इस सेक्शन में, व्यवस्थित तरीके से लिंक करने की सामान्य प्रोसेस के बारे में बताया गया है. इस सेक्शन में, आसानी से लिंक करने का फ़्लो, कई तरह के फ़्लो के बारे में बताता है, जो इन चीज़ों के आधार पर हो सकते हैं: a) आपने बोलकर खाता बनाने की सुविधा चालू या बंद की है या नहीं और b) इंप्लिसिट फ़्लो का इस्तेमाल किया है या ऑथराइज़ेशन कोड फ़्लो का इस्तेमाल किया है.

बुनियादी फ़्लो इस तरह है:

  1. आपकी सेट की गई कार्रवाई, उपयोगकर्ता से अपनी Google प्रोफ़ाइल ऐक्सेस करने की सहमति मांगती है.
  2. उपयोगकर्ता की सहमति मिलने के बाद, आपकी सेट की गई कार्रवाई को Google आईडी टोकन मिलता है. इसमें उपयोगकर्ता की Google प्रोफ़ाइल की जानकारी होती है.
  3. प्रोफ़ाइल का कॉन्टेंट पढ़ने के लिए, आपको टोकन की पुष्टि और उसे डिकोड करना होगा.
  4. आपकी सेट की गई कार्रवाई, इस टोकन का इस्तेमाल करके यह जांच करती है कि उपयोगकर्ता की Google प्रोफ़ाइल की जानकारी आपके सिस्टम में मौजूद है या नहीं.
    1. अगर ऐसा है, तो उपयोगकर्ता ने पहले ही अपने Google खाते से आपके सिस्टम में साइन इन किया हुआ है. साथ ही, Assistant उपयोगकर्ता की पहचान को उसके Google खाते से लिंक कर देती है. उपयोगकर्ता, जोड़े गए खाते से Assistant के साथ बातचीत जारी रख सकता है.
    2. अगर ऐसा नहीं है, तो पांचवां चरण देखें.
  5. उपयोगकर्ता या तो a) अपनी Google प्रोफ़ाइल की जानकारी का इस्तेमाल करके नया खाता बना सकता है या b) आपके सिस्टम में किसी दूसरे खाते से साइन इन कर सकता है. आपने बोलकर खाता बनाने की सुविधा को चालू किया है या उसे बंद किया है, इस आधार पर उपयोगकर्ता को अलग-अलग विकल्प मिलते हैं. अगर उपयोगकर्ता आपके सिस्टम में किसी दूसरे खाते से साइन इन करता है, तो स्टैंडर्ड OAuth फ़्लो शुरू हो जाता है.
  6. जब उपयोगकर्ता नया खाता बनाता है या सेवा देने वाली किसी दूसरी कंपनी के साथ साइन इन करता है, तो आपकी सेवा, Google को एक ऐक्सेस टोकन दिखाती है. (अगर ऑथराइज़ेशन कोड फ़्लो का इस्तेमाल किया जा रहा है, तो आपकी सेवा एक रीफ़्रेश टोकन भी दिखाती है.)
  7. उपयोगकर्ता अब लिंक किए गए खाते से Assistant के साथ बातचीत जारी रख सकता है.

खातों को जोड़ने के आसान तरीके

इस सेक्शन में ऐसे अलग-अलग फ़्लो के बारे में बताया गया है जो व्यवस्थित तरीके से लिंक करने की सुविधा का इस्तेमाल कर सकते हैं. ये डायग्राम, इंप्लिसिट कोड फ़्लो के बजाय, ऑथराइज़ेशन कोड फ़्लो के साथ होने वाले फ़्लो पर ले जाते हैं और मान लेते हैं कि आपने ऐक्शन बिल्डर का इस्तेमाल किया है.

जब उपयोगकर्ता आपकी सेट की गई कार्रवाई को शुरू करता है, उसके बाद हर फ़्लो में ये सामान्य चरण शामिल होते हैं:

ऊपर दिए गए फ़्लो में, आपने खाता लिंक करने वाले सिस्टम सीन पर स्विच किया है और ज़रूरत के मुताबिक वजह बताई है. इस सीन में, उपयोगकर्ता से उसकी Google प्रोफ़ाइल की जानकारी ऐक्सेस करने की अनुमति मांगी जाती है. उपयोगकर्ता की सहमति के बाद, Assistant एक अनुरोध भेजती है, जिसमें user@gmail.com की प्रोफ़ाइल की जानकारी शामिल होती है.

इसके बाद के फ़्लो इस आधार पर अलग-अलग होते हैं कि आपने खाता लिंक करने के लिए आवाज़ से कॉन्फ़िगर किया है या नहीं. साथ ही, इस बात पर भी निर्भर करता है कि उपयोगकर्ता की जानकारी आपके सिस्टम में पहले से मौजूद है या नहीं. इनमें से हर फ़्लो के बारे में नीचे दिए गए सेक्शन में बताया गया है.

वॉइस खाता बनाने की सुविधा के साथ फ़्लो

इस सेक्शन में खाता लिंक करने के उन तरीकों की जानकारी दी गई है जो बोलकर खाता बनाने की सुविधा चालू करने पर आ सकते हैं.

फ़्लो 1: उपयोगकर्ता की जानकारी आपके सिस्टम में मौजूद है

इस मामले में, user@gmail.com से दिखाया गया उपयोगकर्ता आपके बैकएंड में मौजूद है. इसलिए, आपका टोकन एक्सचेंज एंडपॉइंट, उपयोगकर्ता के लिए टोकन दिखाता है. आपकी सेट की गई कार्रवाई में उपयोगकर्ता की पहचान, अब उसके Google खाते से लिंक हो गई है. उपयोगकर्ता के ओरिजनल अनुरोध (“मेरा सामान्य ऑर्डर करें”), उपयोगकर्ता के इंटेंट से मैच होता है order_drink. इसके बाद, आपका वेबहुक मेल खाने वाले इंटेंट को पूरा करने को मैनेज करता है और user@gmail.com के सामान्य ऑर्डर के लिए, आपके डेटाबेस से क्वेरी करता है. इसके बाद वह उपयोगकर्ता, Assistant से अपनी बातचीत जारी रख सकता है.

फ़्लो 2: उपयोगकर्ता की जानकारी मौजूद नहीं है और उपयोगकर्ता खाता बनाता है

आपने बोलकर खाता बनाने की सुविधा चालू की है और user@gmail.com आपके बैकएंड में मौजूद नहीं है. इसलिए, Assistant उपयोगकर्ता से पूछती है कि उन्हें इनमें से कोई काम करना है या नहीं:

a) Google पर उनकी प्रोफ़ाइल की जानकारी का इस्तेमाल करके, अपने सिस्टम पर एक नया खाता बनाएं. इसके लिए, आपको बोलकर निर्देश देना होगा

b) अपने सिस्टम में किसी दूसरे खाते से साइन इन करें

इस मामले में, उपयोगकर्ता अपनी आवाज़ से नया खाता बनाने का विकल्प चुनता है. Google, आपकी सेवा के टोकन एक्सचेंज एंडपॉइंट को खाता बनाने के अनुरोध के साथ कॉल करता है. इस अनुरोध में Google आईडी टोकन शामिल होता है, जिसमें नया खाता बनाने के लिए ज़रूरी कॉम्पोनेंट शामिल होते हैं. इसके बाद, इस टोकन (उपयोगकर्ता का नाम और ईमेल पता) की जानकारी का इस्तेमाल करके, उपयोगकर्ता के लिए खाता बनाया जा सकता है.

खाता बनने के बाद, आपकी सेवा नए खाते के लिए ऐक्सेस टोकन दिखाती है और रीफ़्रेश टोकन दिखाती है. आपकी सेट की गई कार्रवाई में, उपयोगकर्ता की पहचान अब उसके Google खाते से लिंक हो गई है. उपयोगकर्ता के मूल अनुरोध (“मेरा सामान्य ऑर्डर करें”) का अनुरोध, उपयोगकर्ता के इंटेंट से मैच करता है order_drink. इसके बाद, आपका वेबहुक मेल खाने वाले इंटेंट को पूरा करता है और आपके डेटाबेस से user@gmail.com के सामान्य ऑर्डर के लिए क्वेरी करता है. उपयोगकर्ता के नए होने की वजह से यह अभी तक मौजूद नहीं है. इसके बाद, आपकी सेट की गई कार्रवाई उपयोगकर्ता से पूछ सकती है कि वे क्या ऑर्डर करना चाहते हैं.

फ़्लो 3: उपयोगकर्ता की जानकारी मौजूद नहीं होती और उपयोगकर्ता किसी दूसरे खाते से साइन इन करता है

आपने बोलकर खाता बनाने की सुविधा चालू की है. इसलिए, Assistant उपयोगकर्ता से पूछती है कि उन्हें इनमें से कोई एक काम करना है या नहीं:

a) Google पर उनकी प्रोफ़ाइल की जानकारी का इस्तेमाल करके, अपने सिस्टम पर एक नया खाता बनाएं. इसके लिए, आपको बोलकर निर्देश देना होगा

b) अपने सिस्टम में किसी दूसरे खाते से साइन इन करें

इस मामले में, उपयोगकर्ता किसी दूसरे खाते से साइन इन करने का विकल्प चुनता है, जिससे स्टैंडर्ड OAuth फ़्लो शुरू होता है. अगर फ़्लो की प्रोसेस सिर्फ़ वॉइस डिवाइस पर शुरू होती है, तो Google, एक्ज़ीक्यूशन को फ़ोन पर ट्रांसफ़र करता है. इसके बाद Google, उपयोगकर्ता के ब्राउज़र में आपका ऑथराइज़ेशन एंडपॉइंट खोलता है और आपके कॉन्फ़िगरेशन के आधार पर, उपयोगकर्ता यह चुन सकता है कि a) आपकी सेवा में ऐसे मौजूदा खाते से साइन इन करे जिसमें 'Google साइन-इन' का इस्तेमाल न किया गया हो या b) किसी दूसरी कंपनी की मदद से नया खाता बनाएं. OAuth फ़्लो के बारे में ज़्यादा जानकारी के लिए, OAuth लिंक करने का कॉन्सेप्ट बताने वाली गाइड देखें.

उपयोगकर्ता के क्रेडेंशियल की पुष्टि करने के बाद, आपकी सेवा Google को ऐक्सेस टोकन और रीफ़्रेश टोकन देती है. आपकी सेट की गई कार्रवाई में उपयोगकर्ता की पहचान, अब गैर-Google खाते से लिंक कर दी गई है. उपयोगकर्ता के मूल अनुरोध (“मेरा सामान्य तौर पर ऑर्डर करें”), उपयोगकर्ता के इंटेंट से मैच करता है order_drink. इसके बाद, आपका वेबहुक मेल खाने वाले इंटेंट को पूरा करता है और user@gmail.com के सामान्य ऑर्डर के लिए आपके डेटाबेस से क्वेरी करता है. उपयोगकर्ता के नए होने की वजह से यह अभी तक मौजूद नहीं है. इसके बाद, आपकी सेट की गई कार्रवाई उपयोगकर्ता से पूछ सकती है कि उसे क्या ऑर्डर करना है या उससे सामान्य ऑर्डर सेट अप करने के लिए कहा जा सकता है.

वॉइस खाता बनाने की सुविधा के साथ फ़्लो को बंद कर दिया गया है

इस सेक्शन में, खाता लिंक करने के फ़्लो के बारे में जानकारी दी गई है. ऐसा तब होता है, जब वॉइस से खाता बनाने की सुविधा बंद की जाती है.

फ़्लो 4: उपयोगकर्ता की जानकारी मौजूद नहीं है

आपने बोलकर खाता बनाने की सुविधा चालू नहीं की है और आपके बैकएंड में उपयोगकर्ता मौजूद नहीं है. इसलिए, स्टैंडर्ड OAuth फ़्लो शुरू होता है. Assistant, आपके ऑथराइज़ेशन एंडपॉइंट को उपयोगकर्ता के ब्राउज़र में खोलता है (अगर फ़्लो की प्रोसेस, सिर्फ़ आवाज़ वाले डिवाइस पर शुरू होती है, तो Google, एक्ज़ीक्यूशन को स्क्रीन वाले डिवाइस पर ट्रांसफ़र करता है). उपयोगकर्ता इनमें से किसी एक को चुन सकता है: a) किसी दूसरे सेवा देने वाले के साथ साइन इन करना, अगर उसने आपकी सेवा के लिए किसी दूसरे खाते से रजिस्टर किया हो या b) किसी दूसरे सेवा देने वाले के साथ नया खाता बनाएं. OAuth फ़्लो के बारे में ज़्यादा जानकारी के लिए, OAuth लिंक करने का कॉन्सेप्ट बताने वाली गाइड देखें.

उपयोगकर्ता के क्रेडेंशियल की पुष्टि करने के बाद, आपकी सेवा Google को ऐक्सेस टोकन और रीफ़्रेश टोकन देती है. आपकी सेट की गई कार्रवाई में उपयोगकर्ता की पहचान, अब गैर-Google खाते से लिंक कर दी गई है. उपयोगकर्ता के मूल अनुरोध (“मेरा सामान्य तौर पर ऑर्डर करें”), उपयोगकर्ता के इंटेंट से मैच करता है order_drink. इसके बाद, आपका वेबहुक मेल खाने वाले इंटेंट को पूरा करता है और user@gmail.com के सामान्य ऑर्डर के लिए आपके डेटाबेस से क्वेरी करता है. उपयोगकर्ता के नए होने की वजह से यह अभी तक मौजूद नहीं है. इसके बाद, आपकी सेट की गई कार्रवाई, उपयोगकर्ता से अपना सामान्य क्रम सेट अप करने के लिए कह सकती है.