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

अवलोकन

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

OAuth और Google साइन-इन के साथ खाता लिंक करने के लिए, इन सामान्य चरणों का पालन करें:

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

चित्रा 1। सुव्यवस्थित लिंकिंग के साथ उपयोगकर्ता के फ़ोन पर खाता लिंक करना

सुव्यवस्थित लिंकिंग के लिए आवश्यकताएँ

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

आपका टोकन विनिमय endpoint का समर्थन करना चाहिए 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",

  "refresh_token": "REFRESH_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",

  "refresh_token": "REFRESH_TOKEN",

  "expires_in": SECONDS_TO_EXPIRATION
}

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

आप खाता लिंकिंग के दौरान अपने Google API क्लाइंट आईडी प्रदान करने के लिए आवश्यक हो जाएगा पंजीकरण प्रक्रिया।

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

  1. की साख पृष्ठ खोलें Google API कंसोल
  2. Google API प्रोजेक्ट बनाएं या चुनें।

    अपनी परियोजना वेब अनुप्रयोग प्रकार के लिए एक ग्राहक आईडी नहीं है, तो, साख बनाएं पर क्लिक करें> OAuth क्लाइंट आईडी एक बनाने के लिए। में अधिकृत जावास्क्रिप्ट मूल बॉक्स आपकी साइट के डोमेन शामिल करना न भूलें। जब आप स्थानीय परीक्षण या विकास करते हैं, आप जोड़ना आवश्यक दोनों 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. पुष्टि करें कि आपको अपने प्लेटफ़ॉर्म पर पुनर्निर्देशित किया गया है।