अनुमति देने की प्रोसेस के दौरान, Google OAuth से कोई गड़बड़ी हो सकती है. इस प्रोसेस के दौरान होने वाली सबसे आम गड़बड़ियों को ठीक करने के लिए, इस गाइड का इस्तेमाल करें.
समस्या का हल
Google OAuth के बारे में ज़्यादा जानने के लिए, OAuth 2.0 का इस्तेमाल करके, Google API को ऐक्सेस करना लेख पढ़ें.
रीफ़्रेश टोकन की समयसीमा खत्म होती रहती है
अगर क्लाइंट आईडी को मंज़ूरी नहीं मिली है, तो सात दिनों के बाद रीफ़्रेश टोकन काम करना बंद कर सकते हैं. यह एक संभावित वजह है. सात दिनों में टोकन की समयसीमा खत्म होने का मतलब यह नहीं है कि कमर्शियल या सैंडबॉक्स के लिए मंज़ूरी मिल गई है. किसी सेवा या उपयोगकर्ता खाते को, OAuth 2.0 क्लाइंट आईडी को मंज़ूरी दिलानी होगी. साथ ही, उसे प्रोडक्शन में डालना होगा, ताकि टोकन की लाइफ़स्पैन बढ़ाई जा सके. ज़्यादा जानकारी के लिए, रीफ़्रेश टोकन की समयसीमा खत्म होना देखें.
ऐक्सेस करने की मंज़ूरी नहीं मिली
अगर आपने Google Cloud में OAuth की सहमति वाली स्क्रीन सेट अप की है और उपयोगकर्ता का टाइप बाहरी है, तो आपको "ऐक्सेस नहीं दिया गया" गड़बड़ी का मैसेज मिलेगा. ऐसा तब होगा, जब आपने किसी ऐसे Google खाते को लिंक करने की कोशिश की हो जिसे आपके ऐप्लिकेशन के लिए, टेस्टर के तौर पर लिस्ट नहीं किया गया है. पक्का करें कि आपने Google खाते को OAuth की सहमति वाली स्क्रीन में टेस्टर सेक्शन में जोड़ा हो.
Partner Connections Manager (PCM) से जुड़ी गड़बड़ी
पीसीएम को ऐक्सेस करते समय आने वाली किसी भी गड़बड़ी के बारे में जानने के लिए, Partner Connections Manager (PCM) की गड़बड़ी से जुड़ी जानकारी देखें.
Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है
SDM API, सीमित स्कोप का इस्तेमाल करता है. इसका मतलब है कि अनुमति देने के दौरान इस स्कोप का इस्तेमाल करने वाले सभी ऐप्लिकेशन को "बिना पुष्टि वाला" माना जाएगा. ऐसा तब तक होगा, जब तक OAuth API की पुष्टि पूरी नहीं हो जाती. निजी इस्तेमाल के लिए Device Access का इस्तेमाल करते समय, OAuth API की पुष्टि करना ज़रूरी नहीं है.
अनुमति देने की प्रोसेस के दौरान, आपको "Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है" स्क्रीन दिख सकती है. यह स्क्रीन तब दिखती है, जब Google Cloud में आपकी OAuth सहमति स्क्रीन पर sdm.service
स्कोप कॉन्फ़िगर नहीं किया गया होता है. इस स्क्रीन को बायपास किया जा सकता है. इसके लिए, ऐडवांस विकल्प पर क्लिक करें. इसके बाद, प्रोजेक्ट का नाम पर जाएं (सुरक्षित नहीं) पर क्लिक करें.
ज़्यादा जानकारी के लिए, पुष्टि नहीं की गई ऐप्लिकेशन स्क्रीन देखें.
अमान्य क्लाइंट
ऐक्सेस या रीफ़्रेश टोकन पाने की कोशिश करते समय, अगर आपने OAuth 2.0 क्लाइंट सीक्रेट गलत दिया है, तो आपको "अमान्य क्लाइंट" गड़बड़ी का मैसेज मिलेगा. पक्का करें कि ऐक्सेस और रीफ़्रेश टोकन कॉल में इस्तेमाल की जा रही client_secret
वैल्यू, इस्तेमाल किए जा रहे OAuth 2.0 क्लाइंट आईडी के लिए हो. यह वैल्यू, आपको Google Cloud क्रेडेंशियल पेज पर मिलेगी.
अनुरोध अमान्य है, ज़रूरी स्कोप मौजूद नहीं है
पीसीएम में अनुमतियां देने के बाद, आपको "अमान्य अनुरोध" वाली गड़बड़ी का मैसेज मिल सकता है. इसमें "ज़रूरी पैरामीटर मौजूद नहीं है: स्कोप" लिखा होता है. पक्का करें कि अनुमति देने के लिए किए गए कॉल में इस्तेमाल की जा रही scope
वैल्यू वही हो जो आपने OAuth 2.0 क्लाइंट के लिए सेट की है. यह वैल्यू, Google Cloud क्रेडेंशियल पेज पर देखी जा सकती है.
रीडायरेक्ट यूआरआई मेल नहीं खाता
पुष्टि की प्रोसेस के दौरान, आपको "रीडायरेक्ट यूआरआई मेल नहीं खा रहा" गड़बड़ी दिख सकती है. पक्का करें कि अनुमति देने के लिए किए गए कॉल में इस्तेमाल की जा रही redirect_uri
वैल्यू, OAuth 2.0 क्लाइंट के लिए सेट की गई वैल्यू के बराबर हो. यह वैल्यू, Google Cloud क्रेडेंशियल पेज पर देखी जा सकती है.
एक नज़र में जानकारी
इस रेफ़रंस का इस्तेमाल करके,user को अनुमति देने और उसके Google खाते को लिंक करने के लिए, तुरंत कार्रवाई करें.
इस क्विक रेफ़रंस का इस्तेमाल करने के लिए, कोड सैंपल में मौजूद हर प्लेसहोल्डर वैरिएबल में अपने इंटिग्रेशन की वैल्यू डालें. इसके बाद, ज़रूरत के मुताबिक कॉपी करके चिपकाएं:
1 पीसीएम
user को अपने ऐप्लिकेशन में मौजूद पीसीएम लिंक पर भेजें. इसके लिए, इन वैल्यू को बदलें:
- project-id Device Access Project आईडी के साथ
- oauth2-client-id अपने Google Cloud क्रेडेंशियल से OAuth2 Client-ID की मदद से
- 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
2 ऑथराइज़ेशन कोड
चुने गए स्कोप के लिए, पीसीएम के ज़रिए अनुमतियां देने के बाद, user को आपके दिए गए रीडायरेक्ट यूआरआई पर रीडायरेक्ट किया जाना चाहिए. अनुमति देने वाला कोड, यूआरएल में code
पैरामीटर के तौर पर दिखता है. यह इस फ़ॉर्मैट में होना चाहिए:
redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope
3 ऐक्सेस टोकन
ऑथराइज़ेशन कोड का इस्तेमाल करके ऐक्सेस टोकन पाएं. इसका इस्तेमाल, उपयोगकर्ता की ओर से 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" }
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 रीफ़्रेश टोकन
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" }