अनुमति देने की प्रोसेस के दौरान, Google OAuth गड़बड़ी का मैसेज दिखा सकता है. इस प्रोसेस के दौरान होने वाली सबसे आम गड़बड़ियों को हल करने के लिए, इस गाइड का इस्तेमाल करें.
समस्या का हल
Google OAuth के बारे में ज़्यादा जानने के लिए, Google API को ऐक्सेस करने के लिए OAuth 2.0 का इस्तेमाल करना लेख पढ़ें.
रीफ़्रेश टोकन की समयसीमा बार-बार खत्म हो रही है
रीफ़्रेश टोकन सात दिनों के बाद काम करना बंद कर सकते हैं. ऐसा होने की एक वजह यह हो सकती है कि क्लाइंट आईडी को मंज़ूरी न मिली हो. सात दिन के बाद टोकन की समयसीमा खत्म होने की सुविधा, कमर्शियल या सैंडबॉक्स से जुड़ी अनुमतियों से नहीं जुड़ी है. किसी सेवा या उपयोगकर्ता खाते को अपने OAuth 2.0 क्लाइंट आईडी को मंज़ूरी देनी होगी और टोकन की लाइफ़सीमा बढ़ाने के लिए, उसे प्रोडक्शन में डालना होगा. ज़्यादा जानकारी के लिए, रीफ़्रेश टोकन की समयसीमा खत्म होना देखें.
ऐक्सेस करने की मंज़ूरी नहीं मिली
अगर आपने Google Cloud में OAuth की सहमति वाली स्क्रीन सेट अप की है और उपयोगकर्ता टाइप बाहरी है, तो किसी ऐसे Google खाते से खाता लिंक करने पर आपको "ऐक्सेस अस्वीकार किया गया" गड़बड़ी का मैसेज दिखेगा जो आपके ऐप्लिकेशन के लिए टेस्टर के तौर पर सूची में नहीं है. पक्का करें कि आपने उस Google खाते को OAuth की सहमति वाली स्क्रीन में टेस्टर सेक्शन में जोड़ दिया हो.
पार्टनर कनेक्शन मैनेजर (पीसीएम) से जुड़ी गड़बड़ी
पीसीएम को ऐक्सेस करते समय मिलने वाली किसी भी गड़बड़ी के लिए, पार्टनर कनेक्शन मैनेजर (पीसीएम) के लिए गड़बड़ी का रेफ़रंस देखें.
Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है
SDM API, पाबंदी वाले स्कोप का इस्तेमाल करता है. इसका मतलब है कि अनुमति के दौरान इस स्कोप का इस्तेमाल करने वाले सभी ऐप्लिकेशन "बिना पुष्टि वाले" के तौर पर दिखेंगे. ऐसा तब तक होगा, जब तक OAuth API की पुष्टि पूरी नहीं हो जाती. निजी इस्तेमाल के लिए Device Access इस्तेमाल करने पर, OAuth API की पुष्टि करना ज़रूरी नहीं है.
अनुमति देने की प्रोसेस के दौरान, आपको "Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है" स्क्रीन दिख सकती है. यह स्क्रीन तब दिखती है, जब Google Cloud में आपकी OAuth सहमति स्क्रीन पर sdm.service
स्कोप कॉन्फ़िगर न किया गया हो. इस स्क्रीन को बायपास करने के लिए, बेहतर विकल्प पर क्लिक करें. इसके बाद, Project
Name (असुरक्षित) पर जाएं पर क्लिक करें.
ज़्यादा जानकारी के लिए, पुष्टि नहीं की गई ऐप्लिकेशन स्क्रीन देखें.
अमान्य क्लाइंट
ऐक्सेस या रीफ़्रेश टोकन पाने के दौरान, अगर आपने OAuth 2.0 क्लाइंट सेक्रेट की गलत वैल्यू दी है, तो आपको "क्लाइंट अमान्य है" गड़बड़ी का मैसेज दिखेगा. पक्का करें कि ऐक्सेस और रीफ़्रेश टोकन कॉल में इस्तेमाल की जा रही client_secret
वैल्यू, इस्तेमाल किए जा रहे OAuth 2.0 क्लाइंट आईडी के लिए हो. यह वैल्यू, आपके Google Cloud क्रेडेंशियल पेज पर दिखती है.
अमान्य अनुरोध, ज़रूरी दायरा मौजूद नहीं है
PCM में अनुमतियां देने के बाद, आपको "ज़रूरी पैरामीटर मौजूद नहीं है: स्कोप" वाली "अमान्य अनुरोध" गड़बड़ी का मैसेज मिल सकता है. पक्का करें कि अनुमति वाले कॉल में इस्तेमाल की जा रही scope
वैल्यू, OAuth 2.0 क्लाइंट के लिए सेट की गई वैल्यू से मेल खाती हो. यह वैल्यू, Google Cloud के क्रेडेंशियल पेज पर देखी जा सकती है.
रीडायरेक्ट यूआरआई मेल नहीं खाता
अनुमति की प्रक्रिया के दौरान, आपको "रीडायरेक्ट यूआरआई मेल नहीं खाता" वाली गड़बड़ी दिख सकती है. पक्का करें कि अनुमति वाले कॉल में इस्तेमाल की जा रही redirect_uri
वैल्यू, वही हो जो आपने OAuth 2.0 क्लाइंट के लिए सेट की है. यह वैल्यू, आपके Google Cloud के क्रेडेंशियल पेज पर दिखती है.
एक नज़र में जानकारी
किसी व्यक्ति को अनुमति देने और उसके Google खाते को लिंक करने के लिए, इस रेफ़रंस का इस्तेमाल करके, तेज़ी से यह तरीका अपनाएं.user
इस क्विक रेफ़रंस का इस्तेमाल करने के लिए, कोड सैंपल में मौजूद हर प्लेसहोल्डर वैरिएबल में, अपने इंटिग्रेशन की वैल्यू डालें. इसके बाद, ज़रूरत के हिसाब से कॉपी करके चिपकाएं:
user को अपने ऐप्लिकेशन में PCM लिंक पर भेजें. इसके लिए, इनकी जगह पर ये लिंक डालें:
- project-id अपने Device Access Project आईडी से
- oauth2-client-id को अपने Google Cloud Credentials से मिले OAuth2 क्लाइंट आईडी के साथ
- redirect-uri, जिसमें आपके इस्तेमाल किए जा रहे OAuth2 क्लाइंट आईडी के लिए तय किया गया रीडायरेक्ट यूआरआई हो
- 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
ऐक्सेस टोकन पाने के लिए, ऑथराइज़ेशन कोड का इस्तेमाल करें. इसका इस्तेमाल, उपयोगकर्ता की ओर से SDM API को कॉल करने के लिए किया जा सकता है.
Google के OAuth एंडपॉइंट पर POST कॉल करें. इसके लिए, इनकी जगह पर ये वैल्यू डालें:
- oauth2-client-id और oauth2-client-secret के लिए, Google Cloud के क्रेडेंशियल में मौजूद OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट का इस्तेमाल करें
- authorization-code में, पिछले चरण में मिला कोड डालें
- redirect-uri, जिसमें आपके इस्तेमाल किए जा रहे OAuth2 क्लाइंट आईडी के लिए तय किया गया रीडायरेक्ट यूआरआई हो
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" }
अनुमति तब तक पूरी नहीं होती, जब तक आप 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 '
SDM API के लिए ऐक्सेस टोकन सिर्फ़ एक घंटे के लिए मान्य होते हैं. इस बारे में, Google OAuth से मिले expires_in
पैरामीटर में बताया गया है. अगर आपके ऐक्सेस टोकन की समयसीमा खत्म हो जाती है, तो नया ऐक्सेस टोकन पाने के लिए रिफ़्रेश टोकन का इस्तेमाल करें.
Google के OAuth एंडपॉइंट पर POST कॉल करें. इसके लिए, इनकी जगह पर ये वैल्यू डालें:
- oauth2-client-id और oauth2-client-secret के लिए, Google Cloud के क्रेडेंशियल में मौजूद OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट का इस्तेमाल करें
- 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" }