किसी खाते को अनुमति देना

Google Cloud और डिवाइस ऐक्सेस प्रोजेक्ट बनाने के बाद, आपके पास ऐसे Google खाते को अनुमति देने का विकल्प होता है जिसमें SDM API की सुविधा हो.

स्ट्रक्चर और डिवाइसों को देखने के लिए, आपको PCM का इस्तेमाल करके, अपने Device Access प्रोजेक्ट से कोई Google खाता लिंक करना होगा. PCM, user को developerअपने स्ट्रक्चर और डिवाइस का डेटा ऐक्सेस करने की अनुमति देता है.

इस गाइड में, आप user और developer, दोनों के तौर पर अपनी सेवाएं देते हैं.

  1. इनकी जगह, नीचे दिए गए लिंक को वेब ब्राउज़र में खोलें:

    1. आपके Device Access Project आईडी से project-id
    2. oauth2-client-id के साथ आपके Google Cloud क्रेडेंशियल से OAuth2 क्लाइंट आईडी
    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. अगर आपने हाल ही में Google में कई खातों से साइन इन किया है, तो आपको खाता चुनें वाली शुरुआती स्क्रीन के साथ अपने Google खातों की सूची दिख सकती है. अगर हां, तो उस डिवाइस(डिवाइसों) से जुड़ा Google खाता चुनें जिसके लिए आपको Device Accessइस्तेमाल करने की अनुमति देनी है.
  3. Google Nest अनुमतियों वाली स्क्रीन खुद PCM की तरह होती है. यहां स्ट्रक्चर और डिवाइस को अनुमतियां दी जा सकती हैं. होम को दी जाने वाली अनुमतियां (पहला चरण) और उस होम से जुड़े किसी भी डिवाइस को दी गई अनुमतियों पर टॉगल करें. इन डिवाइसों पर एसडीएम एपीआई (दूसरा चरण) काम करता है. इसके बाद, आगे बढ़ें पर क्लिक करें.
  4. प्रोजेक्ट का नाम इस्तेमाल करने के लिए कोई खाता चुनें स्क्रीन पर, जहां प्रोजेक्ट का नाम आपके Google Cloud प्रोजेक्ट का नाम है, उस Google खाते को चुनें जिसे एसडीएम एपीआई के लिए इस्तेमाल करना है. पहले वाले Google खाते का इस्तेमाल करें.
  5. खाता चुनने के बाद, आपको स्क्रीन पर चेतावनी दिख सकती है. इसमें बताया गया होगा कि Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है. अगर ऐसा है, तो जारी रखने के लिए, बेहतर विकल्प पर क्लिक करें. इसके बाद, प्रोजेक्ट के नाम पर जाएं (असुरक्षित) पर क्लिक करें. ज़्यादा जानकारी के लिए, देखें Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है.
  6. प्रोजेक्ट को अपने Google खाते का ऐक्सेस देने के लिए, प्रोजेक्ट का नाम अनुमति दें स्क्रीन पर, अनुमति दें पर क्लिक करें.
  7. अपने विकल्पों की पुष्टि करें स्क्रीन पर, पक्का करें कि आपको जो अनुमतियां देनी हैं उन पर सही का निशान लगा हो. साथ ही, पुष्टि करने के लिए अनुमति दें पर क्लिक करें.
  8. आपको https://www.google.com पर रीडायरेक्ट किया जाएगा. ऑथराइज़ेशन कोड, यूआरएल में code पैरामीटर के तौर पर मिलता है, जो इस फ़ॉर्मैट में होना चाहिए:

    https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
    
  9. ऑथराइज़ेशन कोड कॉपी करें.

ऐक्सेस टोकन पाना

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

  1. कोई टर्मिनल खोलें और इसकी जगह यह curl निर्देश दें:

    1. आपके Google Cloud क्रेडेंशियल से, OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट के साथ oauth2-client-id और oauth2-client-secret
    2. पिछले चरण में मिले कोड की मदद से, 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'
    
  2. Google OAuth, दो टोकन, एक ऐक्सेस टोकन, और एक रीफ़्रेश टोकन दिखाता है.

    {
      "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"
        }
      ]
    }
  ]
}

रीफ़्रेश टोकन इस्तेमाल करने का तरीका

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

यह निर्देश, ऐक्सेस टोकन की तरह ही होता है. इसमें फ़र्क है कि आप किसी दूसरे grant_type का इस्तेमाल करते हैं.

  1. कोई टर्मिनल खोलें और इसकी जगह यह curl निर्देश दें:

    1. आपके Google Cloud क्रेडेंशियल से, OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट के साथ oauth2-client-id और oauth2-client-secret
    2. ऐक्सेस टोकन पाते समय, आपको मिले कोड के साथ 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'
    
  2. Google OAuth एक नया ऐक्सेस टोकन दिखाता है.

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

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

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 क्रेडेंशियल पेज पर दी गई है.

खाता अनुमतियां बदलें

किसी प्रोजेक्ट को दी गई अनुमतियों में Device Access बदलाव करने या उसे पूरी तरह से डिसकनेक्ट करने के लिए, PCM पर जाएं:

https://nestservices.google.com/partnerconnections

इस पेज पर आपके खाते से जुड़ी, तीसरे पक्ष की सभी डेवलपर सेवाएं (Device Access प्रोजेक्ट) दिखती हैं. वह प्रोजेक्ट Device Access चुनें जिसमें आपको बदलाव करना है. अनुमतियों में अपने हिसाब से बदलाव करने के लिए, अगली स्क्रीन का इस्तेमाल करें.

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

किसी अधिकृत सेवा को पूरी तरह से डिसकनेक्ट करने के लिए, अपना Google खाता अलग करें पर क्लिक करें. इससे आप खाते के लिए, प्रोजेक्ट को दी गई सभी अनुमतियां और ऐक्सेस टोकन वापस ले सकेंगे.

अगर पीसीएम आपके हिसाब से सेवा नहीं दिखाता है, तो सबसे पहले आपको डिवाइस सूची कॉल करना पड़ सकता है.

झटपट संदर्भ

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

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

1 पीसीएम

इनकी जगह, नीचे दिए गए लिंक को वेब ब्राउज़र में खोलें:

  1. आपके Device Access Project आईडी से project-id
  2. oauth2-client-id के साथ आपके Google Cloud क्रेडेंशियल से OAuth2 क्लाइंट आईडी
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

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

आपको https://www.google.com पर रीडायरेक्ट किया जाएगा. ऑथराइज़ेशन कोड, यूआरएल में code पैरामीटर के तौर पर मिलता है, जो इस फ़ॉर्मैट में होना चाहिए:

https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service

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

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

कोई टर्मिनल खोलें और इसकी जगह यह curl निर्देश दें:

  1. आपके Google Cloud क्रेडेंशियल से, OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट के साथ oauth2-client-id और oauth2-client-secret
  2. पिछले चरण में मिले कोड की मदद से, 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 रीफ़्रेश टोकन

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

कोई टर्मिनल खोलें और इसकी जगह यह curl निर्देश दें:

  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/sdm.service",
  "token_type": "Bearer"
}