OAuth और 'Google से साइन इन करें' सुविधा का इस्तेमाल करके, आसानी से खाता लिंक करना

खास जानकारी

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

OAuth और 'Google से साइन इन करें' सुविधा का इस्तेमाल करके, खाता लिंक करने के लिए यह सामान्य तरीका अपनाएं:

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

पहली इमेज. उपयोगकर्ता के फ़ोन पर, आसानी से खाता लिंक करने की सुविधा का इस्तेमाल करके खाता लिंक करना

लिंक करने की आसान प्रोसेस: OAuth + 'Google से साइन इन करें' फ़्लो

इस क्रम के डायग्राम में, स्ट्रीमलाइन लिंकिंग के लिए उपयोगकर्ता, Google, और टोकन एक्सचेंज एंडपॉइंट के बीच होने वाली बातचीत के बारे में बताया गया है.

User Google App / Server Your Token Exchange Endpoint Your API 1. उपयोगकर्ता खाता लिंक करने की प्रोसेस शुरू करता है 2. 'Google से साइन इन करें' सुविधा के लिए अनुरोध करना 3. Google से साइन इन करें 4. check intent (JWT Assertion) 5. account_found: true/false If account found: 6. get intent If no account: 6. create intent 7. access_token, refresh_token 8. स्टोर के उपयोगकर्ता टोकन 9. उपयोगकर्ता के संसाधनों को ऐक्सेस करना
दूसरी इमेज. Streamlined Linking फ़्लो में इवेंट का क्रम.

भूमिकाएं और ज़िम्मेदारियां

यहां दी गई टेबल में, स्ट्रीमलाइन किए गए लिंकिंग फ़्लो में शामिल लोगों की भूमिकाओं और ज़िम्मेदारियों के बारे में बताया गया है.

कार्रवाई करने वाला व्यक्ति / कॉम्पोनेंट जीएएल की भूमिका ज़िम्मेदारियां
Google ऐप्लिकेशन / सर्वर OAuth क्लाइंट यह कुकी, 'Google से साइन इन करें' सुविधा के लिए उपयोगकर्ता की सहमति लेती है. साथ ही, पहचान की पुष्टि करने वाले दावे (JWT) आपके सर्वर को भेजती है और नतीजे के तौर पर मिले टोकन को सुरक्षित तरीके से सेव करती है.
आपका टोकन एक्सचेंज एंडपॉइंट आइडेंटिटी प्रोवाइडर / अनुमति देने वाला सर्वर यह आइडेंटिटी असर्शन की पुष्टि करता है, मौजूदा खातों की जांच करता है, खाता लिंक करने के इंटेंट (check, get, create) को मैनेज करता है, और अनुरोध किए गए इंटेंट के आधार पर टोकन जारी करता है.
Your Service API संसाधन सर्वर यह मान्य ऐक्सेस टोकन मिलने पर, उपयोगकर्ता के डेटा का ऐक्सेस देता है.

आसानी से लिंक करने की सुविधा के लिए ज़रूरी शर्तें

आसानी से खाता जोड़ने की सुविधा देने या न देने के फ़ैसले का आधार

यहां दिए गए लॉजिक से यह तय होता है कि स्ट्रीमलाइन किए गए लिंक करने की सुविधा के दौरान इंटेंट कैसे कॉल किए जाते हैं:

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

लागू करने की रेसिपी

स्ट्रीमलाइन लिंकिंग की सुविधा के लिए, आपके टोकन एक्सचेंज एंडपॉइंट में check, get, और create इंटेंट लागू होने चाहिए.

अलग-अलग इंटेंट को हैंडल करने के लिए, यह तरीका अपनाएं:

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

Google, आपके टोकन एक्सचेंज एंडपॉइंट को कॉल करता है. इससे यह पुष्टि की जाती है कि Google उपयोगकर्ता आपके सिस्टम में मौजूद है या नहीं. पैरामीटर के बारे में ज़्यादा जानने के लिए, लिंक करने के इंटेंट को आसान बनाना लेख पढ़ें.

लागू करने की रेसिपी

check इंटेंट को हैंडल करने के लिए, ये कार्रवाइयां करें:

  1. अनुरोध की पुष्टि करें:

    • client_id, client_secret, और grant_type की पुष्टि करें. इनकी वैल्यू urn:ietf:params:oauth:grant-type:jwt-bearer होनी चाहिए.
    • JWT की पुष्टि करना में दी गई शर्तों का इस्तेमाल करके, assertion (JWT) की पुष्टि करें.
  2. उपयोगकर्ता को ढूंढना:

    • देखें कि JWT में मौजूद Google खाता आईडी (sub) या ईमेल पता, आपके डेटाबेस में मौजूद किसी उपयोगकर्ता से मेल खाता हो.
  3. जवाब:

    • अगर मिल जाए, तो {"account_found": "true"} के साथ एचटीटीपी 200 OK दिखाएं.
    • अगर नहीं मिलता है, तो {"account_found": "false"} के साथ एचटीटीपी 404 Not Found दिखाएं.

लिंक करने की सुविधा को अपने-आप चालू करने की सुविधा को मैनेज करना (इन्टेंट पाना)

अगर खाता मौजूद है, तो Google टोकन पाने के लिए, आपके एंडपॉइंट को intent=get के साथ कॉल करता है. पैरामीटर की ज़्यादा जानकारी के लिए, लिंक करने के इंटेंट को आसान बनाना लेख पढ़ें.

लागू करने की रेसिपी

get इंटेंट को मैनेज करने के लिए, यह तरीका अपनाएं:

  1. अनुरोध की पुष्टि करें:

    • client_id, client_secret, और grant_type की पुष्टि करें.
    • assertion (JWT) की पुष्टि करें.
  2. उपयोगकर्ता को ढूंढें:

    • sub या email दावे का इस्तेमाल करके, पुष्टि करें कि उपयोगकर्ता मौजूद है.
  3. जवाब दें:

    • अगर लिंक करने की सुविधा चालू हो जाती है, तो JSON के जवाब में access_token, refresh_token, और expires_in जनरेट करें और उन्हें वापस भेजें. साथ ही, HTTP 200 OK भेजें.
    • अगर लिंक करने की सुविधा चालू नहीं होती है, तो HTTP 401 Unauthorized वापस भेजें. साथ ही, {"error": "linking_error"} और OAuth के स्टैंडर्ड तरीके से लिंक करने के लिए, login_hint भेजें. login_hint भेजना ज़रूरी नहीं है.

使用“使用 Google 账号登录”功能处理账号创建事宜(创建 intent)

如果不存在任何账号,Google 会使用 intent=create 调用您的端点,以创建新用户。如需了解参数详情,请参阅 Streamlined Linking Intents

实现方案

如需处理 create intent,请执行以下操作:

  1. 验证请求

    • 验证 client_idclient_secretgrant_type
    • 验证 assertion (JWT)。
  2. 验证用户不存在

    • 检查您的数据库中是否已存在 subemail
    • 如果用户 存在,请返回 HTTP 401 Unauthorized,并使用 {"error": "linking_error", "login_hint": "USER_EMAIL"} 强制回退到 OAuth 关联。
  3. 创建账号

    • 使用 JWT 中的 subemailnamepicture 声明创建新的用户记录。
  4. 回应

    • 在 JSON 响应 (HTTP 200 OK) 中生成并返回令牌。

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

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

  1. क्लाइंट पेज पर जाएं.
  2. Google APIs प्रोजेक्ट बनाएं या कोई मौजूदा प्रोजेक्ट चुनें.

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

लागू करने की पुष्टि करें

OAuth 2.0 Playground टूल का इस्तेमाल करके, लागू करने की पुष्टि की जा सकती है.

टूल में, यह तरीका अपनाएं:

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

Google खाता लिंक करने की सुविधा का डेमो टूल का इस्तेमाल करके, लागू की गई सुविधा की पुष्टि की जा सकती है.

टूल में, यह तरीका अपनाएं:

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