Google Cloud और Device Access प्रोजेक्ट बनाने के बाद, SDM API के लिए, Google खाते को अनुमति दी जा सकती है. इसके लिए, आपके पास Google Nest का कोई ऐसा डिवाइस होना चाहिए जो SDM API के साथ काम करता हो.
अपना खाता लिंक करना
स्ट्रक्चर और डिवाइस देखने के लिए, आपको पीसीएम का इस्तेमाल करके, किसी Google खाते को अपनेDevice Access प्रोजेक्ट से लिंक करना होगा. पीसीएम की मदद से, user को यह अनुमति दी जा सकती है कि वह developerको अपने स्ट्रक्चर और डिवाइस पर मौजूद डेटा ऐक्सेस करने की अनुमति दे.
इस गाइड में, आपको user और developer, दोनों के तौर पर काम करना होगा.
नीचे दिए गए लिंक को किसी वेब ब्राउज़र में खोलें. इसके बाद, इन वैल्यू को बदलें:
- project-id Device Access Project आईडी की मदद से
- oauth2-client-id अपने Google Cloud क्रेडेंशियल से मिले OAuth2 Client-ID के साथ
https://nestservices.google.com/partnerconnections/project-id/auth?
redirect_uri=https://www.google.com& access_type=offline& prompt=consent& client_id=oauth2-client-id& response_type=code& scope=https://www.googleapis.com/auth/sdm.service - अगर आपने हाल ही में एक से ज़्यादा खातों से Google में साइन इन किया है, तो आपको कोई खाता चुनें स्क्रीन दिख सकती है. इसमें आपके Google खातों की सूची होती है. अगर ऐसा है, तो उस Google खाते को चुनें जो उन डिवाइसों से जुड़ा है जिनके लिए आपको Device Accessकी अनुमति देनी है.
- Google Nest की अनुमतियां स्क्रीन, पीसीएम ही है. यहां आपको स्ट्रक्चर और डिवाइस की अनुमतियां देने का विकल्प मिलता है. अपने होम (पहला चरण) और उस होम में मौजूद उन सभी डिवाइसों के लिए अनुमतियां चालू करें जिन पर SDM API काम करता है (दूसरा चरण). इसके बाद, आगे बढ़ें पर क्लिक करें.
- प्रोजेक्ट का नाम पर जारी रखने के लिए कोई खाता चुनें स्क्रीन पर, वह Google खाता चुनें जिसे आपको SDM API के लिए अनुमति देनी है. यहां प्रोजेक्ट का नाम आपके Google Cloud प्रोजेक्ट का नाम है. उसी Google खाते का इस्तेमाल करें जिसका इस्तेमाल आपने पहले किया था.
- कोई खाता चुनने के बाद, आपको एक चेतावनी वाली स्क्रीन दिख सकती है. इसमें लिखा होगा कि Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है. अगर ऐसा होता है, तो जारी रखने के लिए, ऐडवांस विकल्प पर क्लिक करें. इसके बाद, प्रोजेक्ट का नाम पर जाएं (सुरक्षित नहीं है) पर क्लिक करें. ज़्यादा जानकारी के लिए, Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है लेख पढ़ें.
- प्रोजेक्ट का नाम ऐक्सेस करने की अनुमति दें स्क्रीन पर, अनुमति दें पर क्लिक करके, प्रोजेक्ट को अपना Google खाता ऐक्सेस करने की अनुमति दें.
- अपने चुने गए विकल्पों की पुष्टि करें स्क्रीन पर, पक्का करें कि जिन अनुमतियों को आपको देना है उनके आगे सही का निशान लगा हो. इसके बाद, पुष्टि करने के लिए अनुमति दें पर क्लिक करें.
आपको https://www.google.com पर रीडायरेक्ट कर दिया जाएगा. यूआरएल में अनुमति देने का कोड,
codeपैरामीटर के तौर पर दिखता है. यह इस फ़ॉर्मैट में होना चाहिए:https://www.google.com?code=authorization-code&
scope=https://www.googleapis.com/auth/sdm.service - ऑथराइज़ेशन कोड कॉपी करें.
ऐक्सेस टोकन पाना
ऐक्सेस टोकन पाने के लिए, ऑथराइज़ेशन कोड का इस्तेमाल करें. इस टोकन का इस्तेमाल, SDM API को कॉल करने के लिए किया जा सकता है.
टर्मिनल खोलें और यहां दी गई
curlकमांड चलाएं. इसमें इन वैल्यू को बदलें:- oauth2-client-id और oauth2-client-secret को अपने Google Cloud क्रेडेंशियल से OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट के साथ कॉन्फ़िगर करें
- authorization-code में पाएं. इसके लिए, पिछले चरण में मिला कोड डालें
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=https://www.google.com' Google OAuth दो टोकन दिखाता है: ऐक्सेस टोकन और रीफ़्रेश टोकन.
इन दोनों वैल्यू को कॉपी करें. ऐक्सेस टोकन का इस्तेमाल SDM API को कॉल करने के लिए किया जाता है. वहीं, रीफ़्रेश टोकन का इस्तेमाल नया ऐक्सेस टोकन पाने के लिए किया जाता है.{"access_token": "access-token","expires_in": 3599,"refresh_token": "refresh-token","scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
डिवाइसों की सूची से कॉल करना
जब तक नए ऐक्सेस टोकन से पहली devices.list कॉल नहीं की जाती, तब तक अनुमति देने की प्रोसेस पूरी नहीं होती. इस शुरुआती कॉल से अनुमति देने की प्रोसेस पूरी हो जाती है. साथ ही, अगर आपने पहले से ही Pub/Sub सदस्यता सेट अप की है, तो इवेंट चालू हो जाते हैं.
devices एंडपॉइंट के लिए यह कॉल करने के लिए, curl का इस्तेमाल करें:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'कॉल पूरा होने पर, आपको Device Accessप्रोजेक्ट से लिंक किए गए डिवाइसों की सूची दिखेगी. हर डिवाइस के लिए, उपलब्ध ट्रेट की अपनी यूनीक सूची होती है:
{
"devices": [
{
"name": "enterprises/project-id/devices/device-id",
"type": "sdm.devices.types.device-type",
"traits": { ... },
"parentRelations": [
{
"parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
"displayName": "device-room-name"
}
]
}
]
}रीफ़्रेश टोकन इस्तेमाल करने का तरीका
SDM API के लिए ऐक्सेस टोकन सिर्फ़ एक घंटे के लिए मान्य होते हैं. इसकी जानकारी, Google OAuth से मिले expires_in पैरामीटर में दी गई है. अगर आपके ऐक्सेस टोकन की समयसीमा खत्म हो जाती है, तो नया ऐक्सेस टोकन पाने के लिए रीफ़्रेश टोकन का इस्तेमाल करें.
यह कमांड, ऐक्सेस टोकन वाली कमांड की तरह ही होती है. हालांकि, इसमें आपको किसी दूसरे grant_type का इस्तेमाल करना होता है.
टर्मिनल खोलें और यहां दी गई
curlकमांड चलाएं. इसमें इन वैल्यू को बदलें:- oauth2-client-id और oauth2-client-secret को अपने Google Cloud क्रेडेंशियल से OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट के साथ कॉन्फ़िगर करें
- refresh-token के साथ, वह कोड डालें जो आपको ऐक्सेस टोकन पाने के दौरान मिला था.
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' Google OAuth, नया ऐक्सेस टोकन दिखाता है.
{"access_token": "new-access-token","expires_in": 3599,"scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
समस्या का हल
Google OAuth के बारे में ज़्यादा जानने के लिए, OAuth 2.0 का इस्तेमाल करके Google API ऐक्सेस करना लेख पढ़ें.
रीफ़्रेश टोकन की समयसीमा खत्म होती रहती है
अगर क्लाइंट आईडी को मंज़ूरी नहीं मिली है, तो सात दिनों के बाद रीफ़्रेश टोकन काम करना बंद कर सकते हैं. यह एक संभावित वजह है. सात दिनों में टोकन की समयसीमा खत्म होने का मतलब यह नहीं है कि कमर्शियल या सैंडबॉक्स के लिए मंज़ूरी मिल गई है. किसी सेवा या उपयोगकर्ता खाते को, OAuth 2.0 क्लाइंट आईडी को मंज़ूरी दिलानी होगी. साथ ही, उसे प्रोडक्शन में डालना होगा, ताकि टोकन की अवधि बढ़ाई जा सके. ज़्यादा जानकारी के लिए, रीफ़्रेश टोकन की समयसीमा खत्म होना लेख पढ़ें.
ऐक्सेस करने की मंज़ूरी नहीं मिली
अगर आपने Google Cloud में OAuth सहमति स्क्रीन सेट अप की है और उपयोगकर्ता का टाइप बाहरी है, तो आपको "ऐक्सेस अस्वीकार किया गया" गड़बड़ी का मैसेज मिलेगा. ऐसा तब होगा, जब आपने किसी ऐसे Google खाते को लिंक करने की कोशिश की हो जिसे आपके ऐप्लिकेशन के लिए, टेस्टर के तौर पर शामिल न किया गया हो. पक्का करें कि आपने Google खाते को OAuth सहमति स्क्रीन में टेस्टर सेक्शन में जोड़ा हो.
पार्टनर कनेक्शन मैनेजर (पीसीएम) से जुड़ी गड़बड़ी
पीसीएम को ऐक्सेस करते समय आने वाली किसी भी गड़बड़ी के बारे में जानने के लिए, पार्टनर कनेक्शन मैनेजर (पीसीएम) की गड़बड़ी से जुड़ी जानकारी देखें.
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 क्रेडेंशियल पेज पर देखी जा सकती है.
खाते की अनुमतियां बदलना
किसी Device Access प्रोजेक्ट को दी गई अनुमतियों में बदलाव करने या उसे पूरी तरह से डिसकनेक्ट करने के लिए, पीसीएम पर जाएं:
https://nestservices.google.com/partnerconnections
इस पेज पर, तीसरे पक्ष के डेवलपर की वे सभी सेवाएं (Device Access प्रोजेक्ट) दिखती हैं जो आपके खाते से जुड़ी हैं. वह Device Access प्रोजेक्ट चुनें जिसमें आपको बदलाव करना है. इसके बाद, अगली स्क्रीन का इस्तेमाल करके अपनी ज़रूरत के हिसाब से अनुमतियों में बदलाव करें.
किसी मान्यता प्राप्त सेवा के लिए, सिर्फ़ कुछ अनुमतियां रद्द करने के लिए, उन अनुमतियों को टॉगल करें जिन्हें आपको रद्द करना है. इसके बाद, सेव करने के लिए वापस जाने वाले ऐरो पर क्लिक करें.
अनुमति वाली किसी सेवा को पूरी तरह से डिसकनेक्ट करने के लिए, अपना Google खाता अनलिंक करें पर क्लिक करें. इससे, प्रोजेक्ट को खाते के लिए दी गई सभी अनुमतियां और ऐक्सेस टोकन वापस ले लिए जाएंगे.
अगर पीसीएम में आपको अपनी पसंद की सेवा नहीं दिख रही है, तो आपको पहले डिवाइस की सूची कॉल करनी होगी.
एक नज़र में जानकारी
इस रेफ़रंस का इस्तेमाल करके,user को अनुमति देने और उसके Google खाते को लिंक करने के लिए, तुरंत कार्रवाई करें.
इस क्विक रेफ़रंस का इस्तेमाल करने के लिए, कोड सैंपल में मौजूद हर प्लेसहोल्डर वैरिएबल में अपने इंटिग्रेशन की वैल्यू डालें. इसके बाद, ज़रूरत के हिसाब से कॉपी करके चिपकाएं:
1 पीसीएम
नीचे दिए गए लिंक को किसी वेब ब्राउज़र में खोलें. इसके बाद, इन वैल्यू को बदलें:
- project-id Device Access Project आईडी की मदद से
- oauth2-client-id अपने Google Cloud क्रेडेंशियल से मिले OAuth2 Client-ID के साथ
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com& access_type=offline& prompt=consent& client_id=oauth2-client-id& response_type=code& scope=https://www.googleapis.com/auth/sdm.service
2 ऑथराइज़ेशन कोड
आपको https://www.google.com पर रीडायरेक्ट कर दिया जाएगा. यूआरएल में अनुमति देने का कोड, code पैरामीटर के तौर पर दिखता है. यह इस फ़ॉर्मैट में होना चाहिए:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3 ऐक्सेस टोकन
ऐक्सेस टोकन पाने के लिए, ऑथराइज़ेशन कोड का इस्तेमाल करें. इस टोकन का इस्तेमाल, SDM API को कॉल करने के लिए किया जा सकता है.
टर्मिनल खोलें और यहां दी गई curl कमांड चलाएं. इसमें इन वैल्यू को बदलें:
- oauth2-client-id और oauth2-client-secret को अपने Google Cloud क्रेडेंशियल से OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट के साथ कॉन्फ़िगर करें
- authorization-code में पाएं. इसके लिए, पिछले चरण में मिला कोड डालें
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=https://www.google.com' जवाब
{
"access_token": "access-token",
"expires_in": 3599,
"refresh_token": "refresh-token",
"scope": "https://www.googleapis.com/auth/sdm.service",
"token_type": "Bearer"
}4 एपीआई कॉल
जब तक नए ऐक्सेस टोकन से पहली devices.list कॉल नहीं की जाती, तब तक अनुमति देने की प्रोसेस पूरी नहीं होती. इस शुरुआती कॉल से अनुमति देने की प्रोसेस पूरी हो जाती है. साथ ही, अगर आपने पहले से ही Pub/Sub सदस्यता सेट अप की है, तो इवेंट चालू हो जाते हैं.
आपको ऑथराइज़ेशन पूरा करने के लिए, तय किए गए स्कोप के लिए लिस्ट किए गए एपीआई कॉल में से किसी एक का इस्तेमाल ज़रूर करना चाहिए.
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 पैरामीटर में दी गई है. अगर आपके ऐक्सेस टोकन की समयसीमा खत्म हो जाती है, तो नया ऐक्सेस टोकन पाने के लिए रीफ़्रेश टोकन का इस्तेमाल करें.
टर्मिनल खोलें और यहां दी गई curl कमांड चलाएं. इसमें इन वैल्यू को बदलें:
- 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/sdm.service",
"token_type": "Bearer"
}