OAuth और 'Google साइन इन' के साथ व्यवस्थित लिंक करना

खास जानकारी

OAuth-आधारित 'Google साइन-इन' व्यवस्थित लिंकिंग 'OAuth लिंकिंग' के ऊपर 'Google साइन-इन' जोड़ता है. इससे, उपयोगकर्ताओं को बिना किसी रुकावट के लिंक करने का अनुभव मिलता है. साथ ही, यह खाता बनाने की सुविधा भी चालू करता है, जिससे उपयोगकर्ता अपने Google खाते का इस्तेमाल करके आपकी सेवा पर एक नया खाता बना सकते हैं.

OAuth और Google साइन इन से खाता जोड़ने के लिए, यह तरीका अपनाएं:

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

पहला डायग्राम. व्यवस्थित लिंकिंग से उपयोगकर्ता के फ़ोन पर खाता जोड़ना

व्यवस्थित तरीके से जोड़ने के लिए ज़रूरी शर्तें

  • सामान्य वेब OAuth लिंकिंग लागू करें. यह ज़रूरी है कि आपकी सेवा पर OAuth 2.0 का पालन करने वाले ऑथराइज़ेशन और टोकन एक्सचेंज एंडपॉइंट काम करते हों.
  • आपके टोकन एक्सचेंज एंडपॉइंट पर, JSON वेब टोकन (JWT) दावे काम करने चाहिए और check, create, और get इंटेंट लागू होने चाहिए.

अपना OAuth सर्वर लागू करना

आपके टोकन एक्सचेंज एंडपॉइंट को check, create, get इंटेंट के साथ काम करना चाहिए. नीचे खाता जोड़ने के फ़्लो से पूरे किए गए चरण दिखाए गए हैं और यह बताया गया है कि अलग-अलग इंटेंट को कब कॉल किया जाता है:

  1. क्या उपयोगकर्ता के पास आपके पुष्टि करने वाले सिस्टम में कोई खाता है? (उपयोगकर्ता हां या नहीं चुनकर तय करता है)
    1. हां : क्या उपयोगकर्ता अपने प्लैटफ़ॉर्म में साइन इन करने के लिए, अपने Google खाते से जुड़े ईमेल का इस्तेमाल करता है? (उपयोगकर्ता हां या नहीं चुनकर तय करता है)
      1. हां : क्या आपके पुष्टि करने वाले सिस्टम में उपयोगकर्ता का कोई मिलता-जुलता खाता है? (check intent को पुष्टि करने के लिए कॉल किया जाता है)
        1. हां : get intent को कॉल किया जाता है. साथ ही, इंटेंट वापस आने पर खाते को जोड़ दिया जाता है.
        2. नहीं : नया खाता बनाएं? (उपयोगकर्ता हां या नहीं चुनकर तय करता है)
          1. हां : create intent को कॉल किया जाता है और इंटेंट बनाने के बाद खाता जुड़ जाता है.
          2. नहीं : वेब OAuth फ़्लो ट्रिगर होता है, उपयोगकर्ता को उनके ब्राउज़र पर भेज दिया जाता है और उपयोगकर्ता को किसी दूसरे ईमेल से लिंक करने का विकल्प दिया जाता है.
      2. नहीं : वेब OAuth फ़्लो ट्रिगर होता है, उपयोगकर्ता को उनके ब्राउज़र पर भेज दिया जाता है, और उपयोगकर्ता को किसी दूसरे ईमेल से लिंक करने का विकल्प दिया जाता है.
    2. नहीं : क्या आपके पुष्टि करने वाले सिस्टम में उपयोगकर्ता का कोई मिलता-जुलता खाता है? (check intent को पुष्टि करने के लिए कॉल किया जाता है)
      1. हां : get intent को कॉल किया जाता है. साथ ही, इंटेंट वापस आने पर खाते को जोड़ दिया जाता है.
      2. नहीं : create intent को कॉल किया जाता है. साथ ही, अगर इंटेंट बनाया जाता है, तो खाता लिंक कर दिया जाता है.

मौजूदा उपयोगकर्ता खाते की जांच करें (इरादे की जांच करें)

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

इसी Google खाते अपनी प्रमाणीकरण प्रणाली में पहले से ही मौजूद न हो, के साथ अपने टोकन विनिमय endpoint प्रतिक्रिया account_found=true । Google खाते में किसी मौजूदा उपयोगकर्ता से मेल नहीं खाता, तो आपका टोकन विनिमय endpoint के साथ एक HTTP 404 नहीं मिला त्रुटि देता है account_found=false

अनुरोध में निम्नलिखित रूप है:

POST /token HTTP/1.1
Host: oauth2.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&intent=check&assertion=JWT&scope=SCOPES

आपका टोकन एक्सचेंज एंडपॉइंट निम्नलिखित मापदंडों को संभालने में सक्षम होना चाहिए:

टोकन समापन बिंदु पैरामीटर
intent इन अनुरोधों के लिए, इस पैरामीटर का मान है check
grant_type टोकन के प्रकार का आदान-प्रदान किया जा रहा है। इन अनुरोधों के लिए, इस पैरामीटर मान है urn:ietf:params:oauth:grant-type:jwt-bearer
assertion एक JSON वेब टोकन (JWT) जो Google उपयोगकर्ता की पहचान का एक हस्ताक्षरित अभिकथन प्रदान करता है। JWT में ऐसी जानकारी होती है जिसमें उपयोगकर्ता का Google खाता आईडी, नाम और ईमेल पता शामिल होता है।

के लिए प्रतिक्रिया करने check के इरादे अनुरोध आपका टोकन विनिमय समाप्ति बिंदु निम्न चरणों का पालन करना होगा:

  • JWT अभिकथन को मान्य और डिकोड करें।
  • जांचें कि क्या Google खाता आपके प्रमाणीकरण प्रणाली में पहले से मौजूद है।
मान्य करें और JWT अभिकथन को डिकोड करें

आप अपनी भाषा के लिए JWT- डिकोडिंग लाइब्रेरी का उपयोग करके JWT दावे को मान्य और डिकोड कर सकते हैं । टोकन के हस्ताक्षर को सत्यापित करने के लिए, JWK या PEM प्रारूपों में उपलब्ध Google की सार्वजनिक कुंजियों का उपयोग करें।

जब डिकोड किया जाता है, तो JWT अभिकथन निम्नलिखित उदाहरण की तरह दिखता है:

{
  "sub": "1234567890",      // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The assertion's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID
  "iat": 233366400,         // Unix timestamp of the assertion's creation time
  "exp": 233370000,         // Unix timestamp of the assertion's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "email_verified": true,   // true, if Google has verified the email address
  "hd": "example.com",      // If present, the host domain of the user's GSuite email address
                            // If present, a URL to user's profile picture
  "picture": "https://lh3.googleusercontent.com/a-/AOh14GjlTnZKHAeb94A-FmEbwZv7uJD986VOF1mJGb2YYQ",
  "locale": "en_US"         // User's locale, from browser or phone settings
}

टोकन के हस्ताक्षर की पुष्टि करने के अलावा, पुष्टि करें कि दावे का जारीकर्ता ( iss फ़ील्ड) https://accounts.google.com , कि ऑडियंस ( aud फ़ील्ड) आपका असाइन किया गया क्लाइंट ID है, और टोकन की समय सीमा समाप्त नहीं हुई है ( exp मैदान)।

email , email_verified और hd फ़ील्ड का उपयोग करके आप यह निर्धारित कर सकते हैं कि Google होस्ट ईमेल पते के लिए आधिकारिक है या नहीं। उन मामलों में जहां Google आधिकारिक है, उपयोगकर्ता को वर्तमान में वैध खाता स्वामी के रूप में जाना जाता है और आप पासवर्ड या अन्य चुनौतियों के तरीकों को छोड़ सकते हैं। अन्यथा, इन विधियों का उपयोग लिंक करने से पहले खाते को सत्यापित करने के लिए किया जा सकता है।

ऐसे मामले जहां Google आधिकारिक है:

  • email में @gmail.com प्रत्यय है, यह एक जीमेल खाता है।
  • email_verified सत्य है और hd सेट है, यह एक G Suite खाता है।

उपयोगकर्ता जीमेल या जी सूट का उपयोग किए बिना Google खातों के लिए पंजीकरण कर सकते हैं। जब email @gmail.com प्रत्यय नहीं होता है और hd अनुपस्थित होता है तो Google आधिकारिक नहीं होता है और उपयोगकर्ता को सत्यापित करने के लिए पासवर्ड या अन्य चुनौती विधियों की सिफारिश की जाती है। email_verfied भी सही हो सकता है क्योंकि Google ने उपयोगकर्ता को शुरू में सत्यापित किया था जब Google खाता बनाया गया था, हालांकि तृतीय पक्ष ईमेल खाते का स्वामित्व परिवर्तित होने के बाद हो सकता है।

जांचें कि क्या Google खाता आपके प्रमाणीकरण सिस्टम में पहले से मौजूद है

जांचें कि क्या निम्न में से कोई भी स्थिति सत्य है:

  • Google खाता आईडी, दावे के में पाया sub क्षेत्र, अपने उपयोगकर्ता डेटाबेस में है।
  • अभिकथन में ईमेल पता आपके उपयोगकर्ता डेटाबेस में एक उपयोगकर्ता से मेल खाता है।

यदि कोई भी शर्त सत्य है, तो उपयोगकर्ता पहले ही साइन अप कर चुका है। उस स्थिति में, निम्न की तरह प्रतिक्रिया लौटाएं:

HTTP/1.1 200 Success
Content-Type: application/json;charset=UTF-8

{
  "account_found":"true",
}

यदि न तो Google खाता आईडी और न ही अभिकथन में निर्दिष्ट ईमेल पता आपके डेटाबेस के किसी उपयोगकर्ता से मेल खाता है, तो उपयोगकर्ता ने अभी तक साइन अप नहीं किया है। इस मामले में, अपने टोकन विनिमय endpoint एक HTTP 404 त्रुटि है कि निर्दिष्ट करता है जवाब देने के लिए की जरूरत है "account_found": "false" , निम्न उदाहरण में:

HTTP/1.1 404 Not found
Content-Type: application/json;charset=UTF-8

{
  "account_found":"false",
}

स्वचालित लिंकिंग संभालें (इरादा प्राप्त करें)

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

यदि संबंधित Google खाता आपके प्रमाणीकरण सिस्टम में पहले से मौजूद है, तो आपका टोकन एक्सचेंज एंडपॉइंट उपयोगकर्ता के लिए एक टोकन लौटाता है। Google खाता एक मौजूदा उपयोगकर्ता से मेल नहीं खाता, तो आपका टोकन विनिमय endpoint एक रिटर्न linking_error त्रुटि और वैकल्पिक login_hint

अनुरोध में निम्नलिखित रूप है:

POST /token HTTP/1.1
Host: oauth2.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&intent=get&assertion=JWT&scope=SCOPES

आपका टोकन एक्सचेंज एंडपॉइंट निम्नलिखित मापदंडों को संभालने में सक्षम होना चाहिए:

टोकन समापन बिंदु पैरामीटर
intent इन अनुरोधों के लिए, इस पैरामीटर का मान है get
grant_type टोकन के प्रकार का आदान-प्रदान किया जा रहा है। इन अनुरोधों के लिए, इस पैरामीटर मान है urn:ietf:params:oauth:grant-type:jwt-bearer
assertion एक JSON वेब टोकन (JWT) जो Google उपयोगकर्ता की पहचान का एक हस्ताक्षरित अभिकथन प्रदान करता है। JWT में ऐसी जानकारी होती है जिसमें उपयोगकर्ता का Google खाता आईडी, नाम और ईमेल पता शामिल होता है।
scope वैकल्पिक: किसी भी दायरे होते आप उपयोगकर्ताओं से अनुरोध करने के लिए गूगल कॉन्फ़िगर कर दिया है।

के लिए प्रतिक्रिया करने get आशय अनुरोध आपका टोकन विनिमय समाप्ति बिंदु निम्न चरणों का पालन करना होगा:

  • JWT अभिकथन को मान्य और डिकोड करें।
  • जांचें कि क्या Google खाता आपके प्रमाणीकरण प्रणाली में पहले से मौजूद है।
मान्य करें और JWT अभिकथन को डिकोड करें

आप अपनी भाषा के लिए JWT- डिकोडिंग लाइब्रेरी का उपयोग करके JWT दावे को मान्य और डिकोड कर सकते हैं । टोकन के हस्ताक्षर को सत्यापित करने के लिए, JWK या PEM प्रारूपों में उपलब्ध Google की सार्वजनिक कुंजियों का उपयोग करें।

जब डिकोड किया जाता है, तो JWT अभिकथन निम्नलिखित उदाहरण की तरह दिखता है:

{
  "sub": "1234567890",      // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The assertion's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID
  "iat": 233366400,         // Unix timestamp of the assertion's creation time
  "exp": 233370000,         // Unix timestamp of the assertion's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "email_verified": true,   // true, if Google has verified the email address
  "hd": "example.com",      // If present, the host domain of the user's GSuite email address
                            // If present, a URL to user's profile picture
  "picture": "https://lh3.googleusercontent.com/a-/AOh14GjlTnZKHAeb94A-FmEbwZv7uJD986VOF1mJGb2YYQ",
  "locale": "en_US"         // User's locale, from browser or phone settings
}

टोकन के हस्ताक्षर की पुष्टि करने के अलावा, पुष्टि करें कि दावे का जारीकर्ता ( iss फ़ील्ड) https://accounts.google.com , कि ऑडियंस ( aud फ़ील्ड) आपका असाइन किया गया क्लाइंट ID है, और टोकन की समय सीमा समाप्त नहीं हुई है ( exp मैदान)।

email , email_verified और hd फ़ील्ड का उपयोग करके आप यह निर्धारित कर सकते हैं कि Google होस्ट ईमेल पते के लिए आधिकारिक है या नहीं। उन मामलों में जहां Google आधिकारिक है, उपयोगकर्ता को वर्तमान में वैध खाता स्वामी के रूप में जाना जाता है और आप पासवर्ड या अन्य चुनौतियों के तरीकों को छोड़ सकते हैं। अन्यथा, इन विधियों का उपयोग लिंक करने से पहले खाते को सत्यापित करने के लिए किया जा सकता है।

ऐसे मामले जहां Google आधिकारिक है:

  • email में @gmail.com प्रत्यय है, यह एक जीमेल खाता है।
  • email_verified सत्य है और hd सेट है, यह एक G Suite खाता है।

उपयोगकर्ता जीमेल या जी सूट का उपयोग किए बिना Google खातों के लिए पंजीकरण कर सकते हैं। जब email @gmail.com प्रत्यय नहीं होता है और hd अनुपस्थित होता है तो Google आधिकारिक नहीं होता है और उपयोगकर्ता को सत्यापित करने के लिए पासवर्ड या अन्य चुनौती विधियों की सिफारिश की जाती है। email_verfied भी सही हो सकता है क्योंकि Google ने उपयोगकर्ता को शुरू में सत्यापित किया था जब Google खाता बनाया गया था, हालांकि तृतीय पक्ष ईमेल खाते का स्वामित्व परिवर्तित होने के बाद हो सकता है।

जांचें कि क्या Google खाता आपके प्रमाणीकरण सिस्टम में पहले से मौजूद है

जांचें कि क्या निम्न में से कोई भी स्थिति सत्य है:

  • Google खाता आईडी, दावे के में पाया sub क्षेत्र, अपने उपयोगकर्ता डेटाबेस में है।
  • अभिकथन में ईमेल पता आपके उपयोगकर्ता डेटाबेस में एक उपयोगकर्ता से मेल खाता है।

एक खाता उपयोगकर्ता के लिए मिलता है, तो टोकन एक पहुँच जारी करने और अपनी HTTPS प्रतिक्रिया के शरीर में एक JSON ऑब्जेक्ट में मान, निम्नलिखित उदाहरण की तरह:

{
  "token_type": "Bearer",
  "access_token": "ACCESS_TOKEN",

  "expires_in": SECONDS_TO_EXPIRATION
}

कुछ मामलों में, उपयोगकर्ता के लिए आईडी टोकन के आधार पर खाता लिंक करना विफल हो सकता है। यदि यह किसी भी कारण से ऐसा नहीं करता है, तो आपका टोकन विनिमय endpoint एक HTTP के साथ उत्तर करने की जरूरत है कि 401 त्रुटि निर्दिष्ट error=linking_error , निम्न उदाहरण से पता चलता है के रूप में:

HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=UTF-8

{
  "error":"linking_error",
  "login_hint":"foo@bar.com"
}

जब गूगल के साथ एक 401 त्रुटि प्रतिक्रिया मिलती है linking_error Google के साथ आपके प्राधिकरण समाप्ति बिंदु को उपयोगकर्ता भेजता login_hint एक पैरामीटर के रूप। उपयोगकर्ता अपने ब्राउज़र में OAuth लिंकिंग प्रवाह का उपयोग करके खाता लिंकिंग पूर्ण करता है।

Google साइन-इन के माध्यम से खाता निर्माण संभालें (इरादा बनाएं)

यदि कोई उपयोगकर्ता आपकी सेवा पर एक खाता बनाने की जरूरत है, तब Google कि निर्दिष्ट करता है तो आपका टोकन विनिमय समाप्ति बिंदु को एक अनुरोध करता है intent=create

अनुरोध में निम्नलिखित रूप है:

POST /token HTTP/1.1
Host: oauth2.example.com
Content-Type: application/x-www-form-urlencoded

response_type=token&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=SCOPES&intent=create&assertion=JWT

आपका टोकन एक्सचेंज एंडपॉइंट निम्नलिखित मापदंडों को संभालने में सक्षम होना चाहिए:

टोकन समापन बिंदु पैरामीटर
intent इन अनुरोधों के लिए, इस पैरामीटर का मान है create
grant_type टोकन के प्रकार का आदान-प्रदान किया जा रहा है। इन अनुरोधों के लिए, इस पैरामीटर मान है urn:ietf:params:oauth:grant-type:jwt-bearer
assertion एक JSON वेब टोकन (JWT) जो Google उपयोगकर्ता की पहचान का एक हस्ताक्षरित अभिकथन प्रदान करता है। JWT में ऐसी जानकारी होती है जिसमें उपयोगकर्ता का Google खाता आईडी, नाम और ईमेल पता शामिल होता है।

भीतर जेडब्ल्यूटी assertion पैरामीटर उपयोगकर्ता के Google खाते आईडी, नाम, और ईमेल पता है, जो आपको अपनी सेवा पर एक नया खाता बनाने के लिए उपयोग कर सकते हैं।

के लिए प्रतिक्रिया करने create के इरादे अनुरोध आपका टोकन विनिमय समाप्ति बिंदु निम्न चरणों का पालन करना होगा:

  • JWT अभिकथन को मान्य और डिकोड करें।
  • उपयोगकर्ता की जानकारी को मान्य करें और नया खाता बनाएं।
मान्य करें और JWT अभिकथन को डिकोड करें

आप अपनी भाषा के लिए JWT- डिकोडिंग लाइब्रेरी का उपयोग करके JWT दावे को मान्य और डिकोड कर सकते हैं । टोकन के हस्ताक्षर को सत्यापित करने के लिए, JWK या PEM प्रारूपों में उपलब्ध Google की सार्वजनिक कुंजियों का उपयोग करें।

जब डिकोड किया जाता है, तो JWT अभिकथन निम्नलिखित उदाहरण की तरह दिखता है:

{
  "sub": "1234567890",      // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The assertion's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID
  "iat": 233366400,         // Unix timestamp of the assertion's creation time
  "exp": 233370000,         // Unix timestamp of the assertion's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "email_verified": true,   // true, if Google has verified the email address
  "hd": "example.com",      // If present, the host domain of the user's GSuite email address
                            // If present, a URL to user's profile picture
  "picture": "https://lh3.googleusercontent.com/a-/AOh14GjlTnZKHAeb94A-FmEbwZv7uJD986VOF1mJGb2YYQ",
  "locale": "en_US"         // User's locale, from browser or phone settings
}

टोकन के हस्ताक्षर की पुष्टि करने के अलावा, पुष्टि करें कि दावे का जारीकर्ता ( iss फ़ील्ड) https://accounts.google.com , कि ऑडियंस ( aud फ़ील्ड) आपका असाइन किया गया क्लाइंट ID है, और टोकन की समय सीमा समाप्त नहीं हुई है ( exp मैदान)।

email , email_verified और hd फ़ील्ड का उपयोग करके आप यह निर्धारित कर सकते हैं कि Google होस्ट ईमेल पते के लिए आधिकारिक है या नहीं। उन मामलों में जहां Google आधिकारिक है, उपयोगकर्ता को वर्तमान में वैध खाता स्वामी के रूप में जाना जाता है और आप पासवर्ड या अन्य चुनौतियों के तरीकों को छोड़ सकते हैं। अन्यथा, इन विधियों का उपयोग लिंक करने से पहले खाते को सत्यापित करने के लिए किया जा सकता है।

ऐसे मामले जहां Google आधिकारिक है:

  • email में @gmail.com प्रत्यय है, यह एक जीमेल खाता है।
  • email_verified सत्य है और hd सेट है, यह एक G Suite खाता है।

उपयोगकर्ता जीमेल या जी सूट का उपयोग किए बिना Google खातों के लिए पंजीकरण कर सकते हैं। जब email @gmail.com प्रत्यय नहीं होता है और hd अनुपस्थित होता है तो Google आधिकारिक नहीं होता है और उपयोगकर्ता को सत्यापित करने के लिए पासवर्ड या अन्य चुनौती विधियों की सिफारिश की जाती है। email_verfied भी सही हो सकता है क्योंकि Google ने उपयोगकर्ता को शुरू में सत्यापित किया था जब Google खाता बनाया गया था, हालांकि तृतीय पक्ष ईमेल खाते का स्वामित्व परिवर्तित होने के बाद हो सकता है।

उपयोगकर्ता जानकारी की पुष्टि करें और नया खाता बनाएं

जांचें कि क्या निम्न में से कोई भी स्थिति सत्य है:

  • Google खाता आईडी, दावे के में पाया sub क्षेत्र, अपने उपयोगकर्ता डेटाबेस में है।
  • अभिकथन में ईमेल पता आपके उपयोगकर्ता डेटाबेस में एक उपयोगकर्ता से मेल खाता है।

यदि दोनों में से कोई एक शर्त सही है, तो उपयोगकर्ता को अपने मौजूदा खाते को अपने Google खाते से लिंक करने के लिए कहें। ताकि निर्दिष्ट 401 त्रुटि एक HTTP के साथ अनुरोध पर प्रतिक्रिया करते हैं, करने के लिए error=linking_error और के रूप में उपयोगकर्ता के ईमेल पते देता login_hint । निम्नलिखित एक नमूना प्रतिक्रिया है:

HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=UTF-8

{
  "error":"linking_error",
  "login_hint":"foo@bar.com"
}

जब गूगल के साथ एक 401 त्रुटि प्रतिक्रिया मिलती है linking_error Google के साथ आपके प्राधिकरण समाप्ति बिंदु को उपयोगकर्ता भेजता login_hint एक पैरामीटर के रूप। उपयोगकर्ता अपने ब्राउज़र में OAuth लिंकिंग प्रवाह का उपयोग करके खाता लिंकिंग पूर्ण करता है।

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

जब निर्माण पूरा हो गया है, टोकन एक्सेस जारी और अपनी HTTPS प्रतिक्रिया के शरीर में एक JSON ऑब्जेक्ट में मान, निम्नलिखित उदाहरण की तरह:

{
  "token_type": "Bearer",
  "access_token": "ACCESS_TOKEN",

  "expires_in": SECONDS_TO_EXPIRATION
}

अपना Google API क्लाइंट आईडी पाएं

खाता जोड़ने की रजिस्ट्रेशन प्रक्रिया के दौरान, आपको अपना Google API क्लाइंट आईडी देना होगा.

OAuth लिंकिंग चरण पूरे करते समय बनाए गए प्रोजेक्ट का इस्तेमाल करके, अपना एपीआई क्लाइंट आईडी पाने के लिए. ऐसा करने के लिए, यहां दिया गया तरीका अपनाएं:

  1. Google API (एपीआई) कंसोल का क्रेडेंशियल पेज खोलें.
  2. कोई Google API प्रोजेक्ट बनाएं या चुनें.

    अगर आपके प्रोजेक्ट में वेब ऐप्लिकेशन टाइप के लिए क्लाइंट आईडी नहीं है, तो क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें. अनुमति वाले JavaScript ऑरिजिन बॉक्स में, अपनी साइट का डोमेन शामिल करना न भूलें. जब आप स्थानीय जांच या डेवलपमेंट करते हैं, तो आपको अनुमति वाले JavaScript ऑरिजिन फ़ील्ड में, http://localhost और http://localhost:<port_number>, दोनों को जोड़ना होगा.

लागू करने की पुष्टि की जा रही है

आप का उपयोग करके अपने कार्यान्वयन को मान्य कर सकते OAuth 2.0 खेल का मैदान उपकरण।

टूल में, निम्न चरणों का पालन करें:

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

आप का उपयोग करके अपने कार्यान्वयन को मान्य कर सकते गूगल खाता लिंक करना डेमो उपकरण।

टूल में, निम्न चरणों का पालन करें:

  1. क्लिक करें गूगल से प्रवेश करें बटन में।
  2. वह खाता चुनें जिसे आप लिंक करना चाहते हैं।
  3. सेवा आईडी दर्ज करें।
  4. वैकल्पिक रूप से एक या अधिक क्षेत्र दर्ज करें जिसके लिए आप एक्सेस का अनुरोध करेंगे।
  5. प्रारंभ डेमो क्लिक करें।
  6. संकेत मिलने पर, पुष्टि करें कि आप सहमति दे सकते हैं और लिंकिंग अनुरोध को अस्वीकार कर सकते हैं।
  7. पुष्टि करें कि आपको अपने प्लेटफ़ॉर्म पर पुनर्निर्देशित किया गया है।