चेतावनी: यह डेटा Google उपयोगकर्ता डेटा नीति के तहत दिया जाता है. कृपया समीक्षा करें और नीति का पालन करें. ऐसा न करने पर, प्रोजेक्ट या खाता निलंबित हो सकता है.

टीवी और सीमित इनपुट डिवाइस पर साइन-इन करें

आप सीमित इनपुट क्षमताओं वाले उपकरणों पर, जैसे कि इंटरनेट से जुड़े टीवी, अपने Google खातों से उपयोगकर्ताओं को अपने ऐप में साइन इन करने दे सकते हैं।

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

इस साइन-इन प्रवाह का उपयोग करने के लिए, ऐप को ऐसे उपकरण पर चलना चाहिए जो निम्नलिखित मानदंडों को पूरा करता हो:

  • डिवाइस को उपयोगकर्ता को निर्देशों के साथ 40-वर्ण का URL और 15-वर्ण का उपयोगकर्ता कोड प्रदर्शित करने में सक्षम होना चाहिए।
  • डिवाइस इंटरनेट से जुड़ा होना चाहिए।

क्लाइंट आईडी और क्लाइंट सीक्रेट प्राप्त करें

Google के साइन-इन एंडपॉइंट पर अनुरोध करने के लिए आपके ऐप को OAuth 2.0 क्लाइंट आईडी और क्लाइंट सीक्रेट की आवश्यकता है।

अपने प्रोजेक्ट की क्लाइंट आईडी और क्लाइंट सीक्रेट खोजने के लिए, निम्न कार्य करें:

  1. मौजूदा OAuth 2.0 क्रेडेंशियल चुनें या क्रेडेंशियल पेज खोलें.
  2. यदि आपने पहले से ऐसा नहीं किया है, तो क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करके और क्रेडेंशियल बनाने के लिए आवश्यक जानकारी प्रदान करके अपने प्रोजेक्ट के OAuth 2.0 क्रेडेंशियल बनाएं।
  3. OAuth 2.0 क्लाइंट आईडी अनुभाग में क्लाइंट आईडी देखें। विवरण के लिए, क्लाइंट आईडी पर क्लिक करें।

यदि आप एक नया क्लाइंट आईडी बना रहे हैं, तो टीवी और सीमित इनपुट डिवाइस एप्लिकेशन प्रकार चुनें।

एक उपयोगकर्ता कोड और सत्यापन URL प्राप्त करें

एक बार जब कोई उपयोगकर्ता Google खाते का उपयोग करके साइन इन करने का अनुरोध करता है, तो आप OAuth 2.0 डिवाइस एंडपॉइंट, https://oauth2.googleapis.com/device/code पर एक HTTP POST अनुरोध भेजकर एक उपयोगकर्ता कोड और सत्यापन URL प्राप्त करते हैं। अनुरोध के साथ अपनी क्लाइंट आईडी और उन क्षेत्रों की सूची शामिल करें जिनकी आपको आवश्यकता है। यदि आप केवल उपयोगकर्ताओं को उनके Google खातों से साइन इन करना चाहते हैं, तो केवल profile और email क्षेत्रों का अनुरोध करें; या, यदि आप उपयोगकर्ताओं की ओर से समर्थित API को कॉल करने की अनुमति का अनुरोध करना चाहते हैं, तो profile और email स्कोप के अतिरिक्त आवश्यक स्कोप का अनुरोध करें।

उपयोगकर्ता कोड के लिए एक उदाहरण अनुरोध निम्नलिखित है:

POST /device/code HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&scope=email%20profile

curl का उपयोग करना:

curl -d "client_id=CLIENT_ID&scope=email profile" https://oauth2.googleapis.com/device/code

प्रतिक्रिया JSON ऑब्जेक्ट के रूप में दी जाती है:

{
  "device_code" : "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8",
  "user_code" : "GQVQ-JKEC",
  "verification_url" : "https://www.google.com/device",
  "expires_in" : 1800,
  "interval" : 5
}

आपका ऐप उपयोगकर्ता को उपयोगकर्ता_कोड और user_code मान प्रदर्शित करता verification_url , और साथ ही, निर्दिष्ट interval पर साइन-इन एंडपॉइंट को तब तक पोल करता है जब तक कि उपयोगकर्ता साइन इन नहीं करता है या expires_in द्वारा निर्दिष्ट समय बीत चुका है।

उपयोगकर्ता कोड और सत्यापन URL प्रदर्शित करें

डिवाइस एंडपॉइंट से उपयोगकर्ता कोड और सत्यापन URL प्राप्त करने के बाद, उन्हें प्रदर्शित करें और उपयोगकर्ता को URL खोलने और उपयोगकर्ता कोड दर्ज करने का निर्देश दें।

verification_url और user_code के मान परिवर्तन के अधीन हैं। अपने UI को इस तरह से डिज़ाइन करें जो निम्नलिखित सीमाओं को संभाल सके:

  • user_code को 15 W आकार के वर्णों को संभालने के लिए पर्याप्त विस्तृत फ़ील्ड में प्रदर्शित किया जाना चाहिए।
  • verification_url को एक ऐसे क्षेत्र में प्रदर्शित किया जाना चाहिए जो 40 वर्णों की एक यूआरएल स्ट्रिंग को संभालने के लिए पर्याप्त चौड़ा हो।

दोनों स्ट्रिंग्स में यूएस-एएससीआईआई कैरेक्टर सेट से कोई भी प्रिंट करने योग्य कैरेक्टर हो सकता है।

जब आप user_code स्ट्रिंग प्रदर्शित करते हैं, तो स्ट्रिंग को किसी भी तरह से संशोधित न करें (जैसे कि केस बदलना या अन्य स्वरूपण वर्ण सम्मिलित करना), क्योंकि भविष्य में कोड का प्रारूप बदलने पर आपका ऐप टूट सकता है।

यदि आप चुनते हैं तो आप URL से योजना को प्रदर्शन उद्देश्यों के लिए अलग करके verification_url स्ट्रिंग को संशोधित कर सकते हैं। यदि आप ऐसा करते हैं, तो सुनिश्चित करें कि आपका ऐप "http" और "https" दोनों प्रकारों को संभाल सकता है। verification_url स्ट्रिंग को अन्यथा संशोधित न करें।

जब उपयोगकर्ता सत्यापन URL पर जाता है, तो उन्हें निम्न जैसा पृष्ठ दिखाई देता है:

कोड दर्ज करके डिवाइस कनेक्ट करें

उपयोगकर्ता द्वारा उपयोगकर्ता कोड दर्ज करने के बाद, Google साइन-इन साइट निम्नलिखित के समान एक सहमति स्क्रीन प्रस्तुत करती है:

डिवाइस क्लाइंट के लिए उदाहरण सहमति स्क्रीन

यदि उपयोगकर्ता अनुमति पर क्लिक करता है, तो आपका ऐप उपयोगकर्ता की पहचान करने के लिए एक आईडी टोकन, Google एपीआई को कॉल करने के लिए एक एक्सेस टोकन और नए टोकन प्राप्त करने के लिए एक ताज़ा टोकन प्राप्त कर सकता है।

एक आईडी टोकन प्राप्त करें और टोकन रीफ्रेश करें

जब आपका ऐप उपयोगकर्ता कोड और सत्यापन URL प्रदर्शित करता है, तो टोकन एंडपॉइंट ( https://oauth2.googleapis.com/token ) को उस डिवाइस कोड के साथ मतदान करना शुरू करें जो आपको डिवाइस एंडपॉइंट से प्राप्त हुआ था। टोकन समापन बिंदु को अंतराल पर, सेकंड में, interval मान द्वारा निर्दिष्ट करें।

निम्नलिखित एक उदाहरण अनुरोध है:

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

client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0

curl का उपयोग करना:

curl -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0" https://oauth2.googleapis.com/token

यदि उपयोगकर्ता ने अभी तक अनुरोध को स्वीकार नहीं किया है, तो प्रतिक्रिया इस प्रकार है:

{
  "error" : "authorization_pending"
}

आपके ऐप को इन अनुरोधों को ऐसी दर से दोहराना चाहिए जो interval के मान से अधिक न हो। यदि आपका ऐप बहुत तेज़ी से मतदान करता है, तो प्रतिक्रिया इस प्रकार है:

{
  "error" : "slow_down"
}

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

{
  "access_token" : "ya29.AHES6ZSuY8f6WFLswSv0HZLP2J4cCvFSj-8GiZM0Pr6cgXU",
  "token_type" : "Bearer",
  "expires_in" : 3600,
  "refresh_token" : "1/551G1yXUqgkDGnkfFk6ZbjMMMDIMxo3JFc8lY8CAR-Q",
  "id_token": "eyJhbGciOiJSUzI..."
}

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

आईडी और एक्सेस टोकन का जीवनकाल सीमित होता है। उपयोगकर्ता को टोकन के जीवनकाल से परे साइन इन रखने के लिए, ताज़ा टोकन संग्रहीत करें और नए टोकन का अनुरोध करने के लिए इसका उपयोग करें।

आईडी टोकन से उपयोगकर्ता प्रोफ़ाइल जानकारी प्राप्त करें

आप किसी भी जेडब्ल्यूटी-डिकोडिंग लाइब्रेरी के साथ आईडी टोकन को डीकोड करके साइन-इन किए गए उपयोगकर्ता के बारे में प्रोफ़ाइल जानकारी प्राप्त कर सकते हैं। उदाहरण के लिए, Auth0 jwt-decode JavaScript लाइब्रेरी का उपयोग करना:

var user_profile = jwt_decode(id_token);

// The "sub" field is available on all ID tokens. This value is unique for each
// Google account and can be used to identify the user. (But do not send this
// value to your server; instead, send the whole ID token so its authenticity
// can be verified.)
var user_id = user_profile["sub"];

// These values are available when you request the "profile" and "email" scopes.
var user_email = user_profile["email"];
var email_verified = user_profile["email_verified"];
var user_name = user_profile["name"];
var user_photo_url = user_profile["picture"];
var user_given_name = user_profile["given_name"];
var user_family_name = user_profile["family_name"];
var user_locale = user_profile["locale"];

अधिक जानकारी