अनुमति से जुड़ी गड़बड़ियां

अनुमति देने की प्रोसेस के दौरान, Google OAuth कोई गड़बड़ी दिखा सकता है. इस प्रोसेस के दौरान होने वाली सबसे आम गड़बड़ियों को ठीक करने के लिए, इस गाइड का इस्तेमाल करें.

समस्या हल करना

Google OAuth के बारे में ज़्यादा जानने के लिए, Google API को ऐक्सेस करने के लिए OAuth 2.0 का इस्तेमाल करना लेख पढ़ें.

रीफ़्रेश टोकन की समयसीमा खत्म होती रहती है

अगर क्लाइंट आईडी स्वीकार नहीं किया गया है, तो हो सकता है कि सात दिन के बाद रीफ़्रेश टोकन काम करना बंद कर दें. टोकन की सात दिनों की समयसीमा, व्यावसायिक या सैंडबॉक्स की मंज़ूरी से जुड़ी नहीं होती है. किसी सेवा या उपयोगकर्ता खाते के लिए, अपने OAuth 2.0 क्लाइंट आईडी को मंज़ूरी लेनी ज़रूरी है. उसे प्रोडक्शन में रखा जाना चाहिए, ताकि टोकन लंबे समय तक इस्तेमाल किया जा सके. ज़्यादा जानकारी के लिए, टोकन खत्म होने की तारीख रीफ़्रेश करें देखें.

ऐक्सेस करने की मंज़ूरी नहीं मिली

अगर आपने Google Cloud में OAuth की सहमति वाली स्क्रीन सेट अप की है और उपयोगकर्ता टाइप बाहरी है, तो किसी ऐसे Google खाते से खाते को लिंक करने की कोशिश करने पर आपको "ऐक्सेस नहीं दिया गया" गड़बड़ी दिखेगी जो आपके ऐप्लिकेशन के टेस्ट उपयोगकर्ता के तौर पर शामिल नहीं है. OAuth की सहमति वाली स्क्रीन में, टेस्ट उपयोगकर्ताओं के सेक्शन में Google खाता जोड़ना न भूलें.

पार्टनर कनेक्शन मैनेजर (पीसीएम) से जुड़ी गड़बड़ी

PCM को ऐक्सेस करते समय आने वाली किसी गड़बड़ी के बारे में मदद पाने के लिए, पार्टनर कनेक्शन मैनेजर (पीसीएम) गड़बड़ी का रेफ़रंस देखें.

Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है

एसडीएम एपीआई एक पाबंदी वाले स्कोप का इस्तेमाल करता है. इसका मतलब है कि अनुमति देने के दौरान इस दायरे का इस्तेमाल करने वाले किसी भी ऐप्लिकेशन की "पुष्टि नहीं हुई" रहेगी, जब तक कि OAuth का इस्तेमाल करके एपीआई की पुष्टि की प्रक्रिया पूरी नहीं हो जाती. निजी इस्तेमाल के लिए Device Access का इस्तेमाल करते समय, OAuth एपीआई की पुष्टि करना ज़रूरी नहीं है.

अनुमति देने की प्रोसेस के दौरान, आपको "Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है" स्क्रीन दिख सकती है. यह स्क्रीन तब दिखती है, जब Google Cloud में OAuth की सहमति वाली स्क्रीन पर sdm.service स्कोप कॉन्फ़िगर नहीं किया गया हो. इस स्क्रीन को बायपास करने के लिए, बेहतर विकल्प पर क्लिक करें. इसके बाद, प्रोजेक्ट के नाम पर जाएं (असुरक्षित).

ज़्यादा जानकारी के लिए, ऐसे ऐप्लिकेशन वाली स्क्रीन देखें जिसकी पुष्टि नहीं हुई है.

अमान्य क्लाइंट

ऐक्सेस या रीफ़्रेश टोकन पाने की कोशिश करते समय, अगर आपने गलत OAuth 2.0 क्लाइंट सीक्रेट दिया है, तो आपको "क्लाइंट अमान्य" गड़बड़ी मिलेगी. पक्का करें कि ऐक्सेस और रीफ़्रेश टोकन कॉल में client_secret की ही वैल्यू इस्तेमाल की जा रही है. यह वही वैल्यू है जिसका इस्तेमाल OAuth 2.0 क्लाइंट आईडी के लिए किया जा रहा है, जैसा कि Google Cloud क्रेडेंशियल पेज पर दिया गया है.

अमान्य अनुरोध, आवश्यक दायरा अनुपलब्ध है

PCM में अनुमतियां देने के बाद, आपको "ज़रूरी पैरामीटर मौजूद नहीं है: स्कोप" की "अमान्य अनुरोध" गड़बड़ी दिख सकती है. पक्का करें कि ऑथराइज़ेशन कॉल में इस्तेमाल की जा रही scope वैल्यू वही है जो आपने OAuth 2.0 क्लाइंट के लिए सेट की है. यह वैल्यू, यह जानकारी आपके Google Cloud क्रेडेंशियल वाले पेज पर दी गई है.

रीडायरेक्ट करने वाला यूआरआई मेल नहीं खाता

अनुमति देने के दौरान, आपको "रीडायरेक्ट यूरी मेल नहीं खाने वाला" गड़बड़ी मिल सकती है. पक्का करें कि ऑथराइज़ेशन कॉल में इस्तेमाल की जा रही redirect_uri वैल्यू वही है जो आपने OAuth 2.0 क्लाइंट के लिए सेट की है. यह वैल्यू वही है जो आपके Google Cloud क्रेडेंशियल पेज पर दी गई है.

झटपट संदर्भ

इस रेफ़रंस का इस्तेमाल करके,user को अनुमति देने और उसके Google खाते को लिंक करने के तरीके को तुरंत लागू किया जा सकता है.

इस क्विक रेफ़रंस का इस्तेमाल करने के लिए, कोड सैंपल में मौजूद हर प्लेसहोल्डर वैरिएबल में, अपने खास इंटिग्रेशन की वैल्यू के साथ बदलाव करें और ज़रूरत के मुताबिक कॉपी करके चिपकाएं:

1 पीसीएम

इनकी जगह, user को अपने ऐप्लिकेशन में मौजूद PCM लिंक पर डायरेक्ट करें:

  1. आपके Device Access Project आईडी से project-id
  2. oauth2-client-id के साथ आपके Google Cloud क्रेडेंशियल से OAuth2 क्लाइंट आईडी
  3. इस्तेमाल किए जा रहे OAuth2 क्लाइंट आईडी के लिए तय किए गए रीडायरेक्ट यूआरआई के साथ redirect-uri
  4. आपके किसी एक उपलब्ध दायरे के साथ scope
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=redirect-uri&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/scope

दो पुष्टि करने वाला कोड

आपके चुने गए दायरे के लिए PCM से अनुमतियां देने के बाद, user को आपके तय किए गए रीडायरेक्ट यूआरआई पर रीडायरेक्ट किया जाना चाहिए. ऑथराइज़ेशन कोड को यूआरएल में code पैरामीटर के तौर पर दिखाया जाता है, जो इस फ़ॉर्मैट में होना चाहिए:

redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope

तीन ऐक्सेस टोकन

ऐक्सेस टोकन को फिर से पाने के लिए, ऑथराइज़ेशन कोड का इस्तेमाल करें. इसका इस्तेमाल, उपयोगकर्ता की तरफ़ से एसडीएम एपीआई को कॉल करने के लिए किया जा सकता है.

Google के OAuth एंडपॉइंट पर पोस्ट कॉल करें, नीचे दिया गया तरीका अपनाएं:

  1. आपके Google Cloud क्रेडेंशियल से, OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट के साथ oauth2-client-id और oauth2-client-secret
  2. पिछले चरण में मिले कोड की मदद से, authorization-code
  3. इस्तेमाल किए जा रहे OAuth2 क्लाइंट आईडी के लिए तय किए गए रीडायरेक्ट यूआरआई के साथ redirect-uri

Google OAuth, दो टोकन, एक ऐक्सेस टोकन, और एक रीफ़्रेश टोकन दिखाता है.

अनुरोध

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=redirect-uri'

जवाब

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}

4 एपीआई कॉल

जब तक userके ऐक्सेस टोकन का इस्तेमाल करके एपीआई कॉल नहीं किया जाता, तब तक अनुमति देने की प्रोसेस पूरी नहीं होगी. इस शुरुआती कॉल में, अनुमति देने की प्रोसेस पूरी हो जाती है और इवेंट चालू हो जाते हैं.

अनुमति देने की प्रक्रिया को पूरा करने के लिए, आपको किसी खास दायरे के लिए, सूची में शामिल किसी एपीआई कॉल का इस्तेमाल करना होगा.

sdm.service

डिवाइस

ज़्यादा जानकारी के लिए, devices.list एपीआई का रेफ़रंस देखें.

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

5 रीफ़्रेश टोकन

एसडीएम एपीआई के लिए ऐक्सेस टोकन, सिर्फ़ एक घंटे के लिए मान्य होते हैं. जैसा कि Google OAuth से मिले expires_in पैरामीटर में बताया गया है. अगर आपके ऐक्सेस टोकन की समयसीमा खत्म हो गई है, तो नया ऐक्सेस टोकन पाने के लिए रीफ़्रेश टोकन का इस्तेमाल करें.

Google के OAuth एंडपॉइंट पर पोस्ट कॉल करें, नीचे दिया गया तरीका अपनाएं:

  1. आपके Google Cloud क्रेडेंशियल से, OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट के साथ oauth2-client-id और oauth2-client-secret
  2. ऐक्सेस टोकन पाते समय, आपको मिले कोड के साथ refresh-token.

Google OAuth एक नया ऐक्सेस टोकन दिखाता है.

अनुरोध

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'

जवाब

{
  "access_token": "new-access-token",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}