OAuth लिंकिंग टाइप, दो इंडस्ट्री स्टैंडर्ड वाले OAuth 2.0 फ़्लो के साथ काम करता है. इनमें इंप्लिसिट और ऑथराइज़ेशन कोड फ़्लो शामिल है.
In the implicit code flow, Google opens your authorization endpoint in the user's browser. After successful sign in, you return a long-lived access token to Google. This access token is now included in every request sent from the Assistant to your Action.
In the authorization code flow, you need two endpoints:
- The authorization endpoint, which is responsible for presenting the sign-in UI to your users that aren't already signed in and recording consent to the requested access in the form of a short-lived authorization code.
- The token exchange endpoint, which is responsible for two types of exchanges:
- Exchanges an authorization code for a long-lived refresh token and a short-lived access token. This exchange happens when the user goes through the account linking flow.
- Exchanges a long-lived refresh token for a short-lived access token. This exchange happens when Google needs a new access token because the one it had expired.
Although the implicit code flow is simpler to implement, Google recommends that access tokens issued using the implicit flow never expire, because using token expiration with the implicit flow forces the user to link their account again. If you need token expiration for security reasons, you should strongly consider using the auth code flow instead.
OAuth खाता जोड़ने की प्रोसेस को लागू करना
प्रोजेक्ट कॉन्फ़िगर करें
OAuth लिंकिंग का इस्तेमाल करने के लिए, अपने प्रोजेक्ट को कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:
- Actions Console खोलें और वह प्रोजेक्ट चुनें जिसका आपको इस्तेमाल करना है.
- डेवलप करें टैब पर क्लिक करें और खाता लिंक करना चुनें.
- खाता लिंक करना के बगल में मौजूद स्विच को चालू करें.
- खाता बनाना सेक्शन में, नहीं, मुझे सिर्फ़ अपनी वेबसाइट पर खाता बनाने की अनुमति देनी है चुनें.
लिंक करने का टाइप में, OAuth और Implicit चुनें.
क्लाइंट की जानकारी में:
- Google से आने वाले अनुरोधों की पहचान करने के लिए, Google Actions से जारी किए गए Client-ID के लिए कोई वैल्यू असाइन करें.
- अपने ऑथराइज़ेशन और टोकन एक्सचेंज एंडपॉइंट के यूआरएल डालें.
- सेव करें पर क्लिक करें.
अपना OAuth सर्वर लागू करना
OAuth 2.0 इंप्लिसिट फ़्लो के साथ काम करने के लिए, आपकी सेवा अनुमति देती है एंडपॉइंट, एचटीटीपीएस से उपलब्ध है. यह एंडपॉइंट, पुष्टि करने और डेटा ऐक्सेस करने के लिए उपयोगकर्ताओं की सहमति लेना. ऑथराइज़ेशन एंडपॉइंट यह आपके उन उपयोगकर्ताओं को साइन इन करने का यूज़र इंटरफ़ेस (यूआई) दिखाता है जिन्होंने पहले से साइन इन नहीं किया है. यह यूज़र इंटरफ़ेस (यूआई) दिखाता है. के लिए अनुरोध किया गया है.
जब आपकी सेट की गई कार्रवाई को, सेवा के अनुमति वाले किसी एपीआई को कॉल करने की ज़रूरत होती है, तो Google यह एंडपॉइंट आपके उपयोगकर्ताओं से इन एपीआई को कॉल करने की अनुमति लेता है: की ओर से.
Google के शुरू किए गए किसी आम OAuth 2.0 इंप्लिसिट फ़्लो सेशन में नया फ़्लो:
- Google, उपयोगकर्ता के ब्राउज़र में आपका ऑथराइज़ेशन एंडपॉइंट खोलता है. कॉन्टेंट बनाने अगर उपयोगकर्ता ने पहले से साइन इन नहीं किया हुआ है, तो वह साइन इन करता है और Google को आपके एपीआई के साथ अपना डेटा सबमिट कर सकता है, अगर उसने पहले से अनुमति नहीं दी है.
- आपकी सेवा एक ऐक्सेस टोकन बनाती है और उसे वापस भेजती है Google, उपयोगकर्ता के ब्राउज़र को ऐक्सेस टोकन के साथ Google पर वापस रीडायरेक्ट करता है अनुरोध के साथ अटैच की गई है.
- Google आपकी सेवा के एपीआई को कॉल करता है और ऐक्सेस टोकन को हर अनुरोध के साथ किया जा सकता है. आपकी सेवा इस बात की पुष्टि करती है कि ऐक्सेस टोकन, Google को अनुमति देता है या नहीं की अनुमति देता है और फिर एपीआई कॉल को पूरा करता है.
अनुमति देने के अनुरोधों को मैनेज करना
जब आपके Action को OAuth 2.0 इंप्लिसिट फ़्लो के ज़रिए खाता लिंक करने की ज़रूरत होती है, Google, उपयोगकर्ता को एक अनुरोध के साथ आपके ऑथराइज़ेशन एंडपॉइंट पर भेजता है, जिसमें यह शामिल होता है नीचे दिए पैरामीटर:
ऑथराइज़ेशन एंडपॉइंट पैरामीटर | |
---|---|
client_id |
वह क्लाइंट आईडी जिसे आपने Google को असाइन किया है. |
redirect_uri |
वह यूआरएल जिस पर आपने इस अनुरोध का जवाब भेजा है. |
state |
हिसाब-किताब की ऐसी वैल्यू जो Google को वापस पास की जाती है. हालांकि, इसमें कोई बदलाव नहीं होता रीडायरेक्ट यूआरआई. |
response_type |
रिस्पॉन्स में दी जाने वाली वैल्यू का टाइप. OAuth 2.0 इंप्लिसिट के लिए
फ़्लो के लिए, रिस्पॉन्स का टाइप हमेशा token होता है. |
उदाहरण के लिए, अगर आपका ऑथराइज़ेशन एंडपॉइंट https://myservice.example.com/auth
पर उपलब्ध है,
अनुरोध ऐसा दिख सकता है:
GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token
आपके ऑथराइज़ेशन एंडपॉइंट से साइन-इन करने के अनुरोध मैनेज किए जा सकें, इसके लिए यह तरीका अपनाएं:
इसके लिए,
client_id
औरredirect_uri
वैल्यू की पुष्टि करें अनचाहे या गलत तरीके से कॉन्फ़िगर किए गए क्लाइंट ऐप्लिकेशन का ऐक्सेस देने से रोकें:- पुष्टि करें कि
client_id
आपके क्लाइंट आईडी से मेल खाता है असाइन किया गया है. - पुष्टि करें कि
redirect_uri
में बताया गया यूआरएल पैरामीटर का यह रूप होता है:https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
YOUR_PROJECT_ID, प्रोजेक्ट सेटिंग पेज पर मौजूद आईडी है कार्रवाइयां कंसोल पर क्लिक करें.
- पुष्टि करें कि
देखें कि उपयोगकर्ता ने आपकी सेवा में साइन इन किया है या नहीं. अगर उपयोगकर्ता ने साइन इन नहीं किया है में जाएं, तो अपनी सेवा का साइन-इन या साइन-अप फ़्लो पूरा करें.
ऐक्सेस टोकन जनरेट करें. Google इसका इस्तेमाल करके, आपके एपीआई को ऐक्सेस करेगा. कॉन्टेंट बनाने ऐक्सेस टोकन कोई भी स्ट्रिंग वैल्यू हो सकता है, लेकिन यह टोकन जिस उपयोगकर्ता और क्लाइंट के लिए है, वह अनुमान लगाने लायक नहीं होना चाहिए.
ऐसा एचटीटीपी रिस्पॉन्स भेजें जो उपयोगकर्ता के ब्राउज़र को यूआरएल पर रीडायरेक्ट करे
redirect_uri
पैरामीटर से तय होता है. सभी को शामिल करें यूआरएल फ़्रैगमेंट में ये पैरामीटर होना चाहिए:access_token
: वह ऐक्सेस टोकन जिसे आपने अभी-अभी जनरेट किया हैtoken_type
: स्ट्रिंगbearer
state
: मूल वैल्यू से, बिना बदलाव की गई स्थिति की वैल्यू अनुरोध इससे बनने वाले यूआरएल का एक उदाहरण नीचे दिया गया है:https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING
Google के OAuth 2.0 रीडायरेक्ट हैंडलर को ऐक्सेस टोकन मिलेगा और इसकी पुष्टि की जाएगी
state
की वैल्यू में कोई बदलाव नहीं हुआ है. Google के पास
ऐक्सेस टोकन नहीं देते हैं, तो Google बाद में किए जाने वाले कॉल के लिए टोकन को अटैच करेगा
AppRequest के हिस्से के तौर पर, आपकी सेट की गई कार्रवाई में जोड़े गए हैं.
पुष्टि करने के लिए, वॉइस यूज़र इंटरफ़ेस डिज़ाइन करें
यह पता करना कि उपयोगकर्ता की पुष्टि हो चुकी है या नहीं और खाता लिंक करने की प्रक्रिया शुरू करें
- Actions कंसोल में अपना Actions Builder प्रोजेक्ट खोलें.
- अपनी सेट की गई कार्रवाई में खाता लिंक करने की प्रोसेस शुरू करने के लिए, एक नया सीन बनाएं:
- सीन पर क्लिक करें.
- नया सीन जोड़ने के लिए, जोड़ें (+) आइकॉन पर क्लिक करें.
- नए सीन में, शर्तों के लिए, add जोड़ें आइकॉन पर क्लिक करें.
- एक शर्त जोड़ें जो यह जांच करती है कि बातचीत से जुड़ा उपयोगकर्ता, पुष्टि किया गया उपयोगकर्ता है या नहीं. अगर जांच पूरी नहीं हो पाती, तो आपकी सेट की गई कार्रवाई, बातचीत के दौरान खाता लिंक नहीं कर पाएगी. साथ ही, इसे ऐसे फ़ंक्शन का ऐक्सेस देना होगा जिसके लिए खाता लिंक करने की ज़रूरत नहीं होती.
- शर्त वाले
Enter new expression
फ़ील्ड में, यह लॉजिक डालें:user.verificationStatus != "VERIFIED"
- ट्रांज़िशन में, ऐसा सीन चुनें जिसमें खाता लिंक करने की ज़रूरत न हो या कोई ऐसा सीन चुनें जो सिर्फ़ मेहमान के लिए उपलब्ध सुविधा के लिए शुरुआती पॉइंट हो.
- शर्त वाले
- शर्तों के लिए, 'add जोड़ें' आइकॉन पर क्लिक करें.
- अगर उपयोगकर्ता की पहचान से जुड़ी जानकारी नहीं है, तो खाता लिंक करने के फ़्लो को ट्रिगर करने के लिए
कोई शर्त जोड़ें.
- शर्त वाले
Enter new expression
फ़ील्ड में, यह लॉजिक डालें:user.verificationStatus == "VERIFIED"
- ट्रांज़िशन में जाकर, खाता लिंक करना सिस्टम सीन चुनें.
- सेव करें पर क्लिक करें.
- शर्त वाले
सेव करने के बाद, आपके प्रोजेक्ट में खाता लिंक करने वाला <SceneName>_AccountLinking
नाम का एक नया सीन जोड़ा जाता है.
खाता लिंक करने के सीन को पसंद के मुताबिक बनाना
- सीन में जाकर, खाता लिंक करने वाले सिस्टम का सीन चुनें.
- सूचना भेजें पर क्लिक करें. इसके बाद, एक छोटा वाक्य जोड़कर उपयोगकर्ता को बताएं कि कार्रवाई को उनकी पहचान का ऐक्सेस क्यों चाहिए. उदाहरण के लिए, "आपकी प्राथमिकताएं सेव करने के लिए".
- सेव करें पर क्लिक करें.
- शर्तें सेक्शन में, अगर उपयोगकर्ता खाता लिंक करने की प्रोसेस पूरी कर लेता है पर क्लिक करें.
- अगर उपयोगकर्ता अपने खाते को लिंक करने की सहमति देता है, तो फ़्लो को कॉन्फ़िगर करना. उदाहरण के लिए, ज़रूरी किसी भी कारोबारी लॉजिक को प्रोसेस करने और मूल सीन पर वापस जाने के लिए वेबहुक को कॉल करें.
- सेव करें पर क्लिक करें.
- शर्तें सेक्शन में, अगर उपयोगकर्ता खाता जोड़ने की प्रोसेस को रद्द करता है या उसे खारिज करता है, तो उस पर क्लिक करें.
- अगर उपयोगकर्ता अपने खाते को लिंक करने के लिए सहमत नहीं है, तो फ़्लो कॉन्फ़िगर करें. उदाहरण के लिए, स्वीकार करने वाला मैसेज भेजें और उन सीन पर रीडायरेक्ट करें जिनमें ऐसी सुविधाएं दी गई हों जिनके लिए खाता लिंक करने की ज़रूरत न हो.
- सेव करें पर क्लिक करें.
- शर्तें सेक्शन में, अगर सिस्टम या नेटवर्क की गड़बड़ी होती है पर क्लिक करें.
- कॉन्फ़िगर करें कि अगर सिस्टम या नेटवर्क की गड़बड़ियों की वजह से खाता लिंक करने का फ़्लो पूरा नहीं हो पा रहा है, तो फ़्लो कैसे आगे बढ़ना चाहिए. उदाहरण के लिए, स्वीकार करने वाला मैसेज भेजें और उन सीन पर रीडायरेक्ट करें जिनमें ऐसी सुविधाएं दी गई हों जिनके लिए खाता लिंक करने की ज़रूरत न हो.
- सेव करें पर क्लिक करें.
डेटा ऐक्सेस करने के अनुरोधों को मैनेज करना
अगर Assistant के अनुरोध में कोई ऐक्सेस टोकन है, तो पहले देखें कि ऐक्सेस टोकन मान्य है या नहीं और उसकी समयसीमा खत्म नहीं हुई है. इसके बाद, अपने डेटाबेस से जुड़ा हुआ उपयोगकर्ता खाता वापस पाएं.