OAuth और Google साइन-इन के कॉन्सेप्ट की गाइड (Dialogflow)

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

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

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

इस बात की पुष्टि करने के लिए कि OAuth और 'Google साइन इन' का इस्तेमाल करना आपके लिए सही है, खाता लिंक करने का तरीका चुनना पेज देखें.

मुख्य शब्द

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

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

OAuth और 'Google साइन-इन' लिंक करने के तरीके का इस्तेमाल करने के लिए, आपको इनकी ज़रूरत होगी:

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

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

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

इस सेक्शन में, OAuth और 'Google साइन इन' के सामान्य फ़्लो के बारे में बताया गया है. OAuth और जीएसआई फ़्लो के सेक्शन में, अलग-अलग तरह के फ़्लो के बारे में बताया गया है. ये फ़्लो इन चीज़ों के आधार पर हो सकते हैं: 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 के साथ बातचीत जारी रख सकता है.

OAuth और जीएसआई फ़्लो

इस सेक्शन में, OAuth और जीएसआई की मदद से होने वाले अलग-अलग फ़्लो के बारे में जानकारी दी गई है. ये डायग्राम, इंप्लिसिट कोड फ़्लो के बजाय, ऑथराइज़ेशन कोड फ़्लो के साथ होने वाले फ़्लो पर जाते हैं. इनमें, यह मानते हैं कि आपकी सेट की गई कार्रवाई के लिए, सामान्य भाषा की समझ के तौर पर Dialogflow का इस्तेमाल किया जा रहा है.

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

ऊपर दिए गए फ़्लो में, आपकी पसंद के मुताबिक बनाई गई कॉन्टेक्स्ट स्ट्रिंग के साथ, actions.intent.SIGN_IN हेल्पर इंटेंट को कॉल किया जाता है. इस इंटेंट में उपयोगकर्ता से उसकी 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 के सामान्य ऑर्डर के लिए आपके डेटाबेस से क्वेरी करता है. उपयोगकर्ता के नए होने की वजह से यह अभी तक मौजूद नहीं है. इसके बाद, आपकी सेट की गई कार्रवाई, उपयोगकर्ता से अपना सामान्य क्रम सेट अप करने के लिए कह सकती है.