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

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

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

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

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

    1. project-id अपने Device Access Project आईडी से
    2. oauth2-client-id को अपने Google Cloud Credentials से मिले 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 की अनुमतियां स्क्रीन, पीसीएम है. यहां स्ट्रक्चर और डिवाइस की अनुमतियां दी जा सकती हैं. अपने होम (पहला चरण) और उस होम में मौजूद उन सभी डिवाइसों के लिए अनुमतियां टॉगल करें जिन पर SDM API काम करता है (दूसरा चरण). इसके बाद, आगे बढ़ें पर क्लिक करें.
  4. प्रोजेक्ट का नाम पर जाने के लिए कोई खाता चुनें स्क्रीन पर, वह Google खाता चुनें जिसे आपको SDM API के लिए अनुमति देनी है. प्रोजेक्ट का नाम, आपके Google Cloud प्रोजेक्ट का नाम होता है. उसी 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. oauth2-client-id और oauth2-client-secret के लिए, Google Cloud के क्रेडेंशियल में मौजूद OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट का इस्तेमाल करें
    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"
    }
    इन दोनों वैल्यू को कॉपी करें. ऐक्सेस टोकन का इस्तेमाल, SDM API को कॉल करने के लिए किया जाता है. साथ ही, रीफ़्रेश टोकन का इस्तेमाल नया ऐक्सेस टोकन पाने के लिए किया जाता है.

डिवाइस सूची से कॉल करना

अनुमति तब तक पूरी नहीं होती, जब तक आप अपने नए ऐक्सेस टोकन से पहला कॉल नहीं करते.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 का इस्तेमाल किया जाता है.

  1. कोई टर्मिनल खोलें और यहां दिया गया curl कमांड चलाएं. इसके लिए, इनकी जगह पर ये डालें:

    1. oauth2-client-id और oauth2-client-secret के लिए, Google Cloud के क्रेडेंशियल में मौजूद OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट का इस्तेमाल करें
    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 खाते से खाता लिंक करने पर आपको "ऐक्सेस अस्वीकार किया गया" गड़बड़ी का मैसेज दिखेगा जो आपके ऐप्लिकेशन के लिए टेस्टर के तौर पर सूची में नहीं है. पक्का करें कि आपने उस 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 के क्रेडेंशियल पेज पर दिखती है.

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

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

https://nestservices.google.com/partnerconnections

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

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

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

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

एक नज़र में जानकारी

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

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

1 पीसीएम

किसी वेब ब्राउज़र में यह लिंक खोलें. इसके लिए, इनकी जगह पर

  1. project-id अपने Device Access Project आईडी से
  2. oauth2-client-id को अपने Google Cloud Credentials से मिले 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

3 ऐक्सेस टोकन

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

कोई टर्मिनल खोलें और यहां दिया गया curl कमांड चलाएं. इसके लिए, इनकी जगह पर नई वैल्यू डालें:

  1. oauth2-client-id और oauth2-client-secret के लिए, Google Cloud के क्रेडेंशियल में मौजूद OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट का इस्तेमाल करें
  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 रीफ़्रेश टोकन

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

कोई टर्मिनल खोलें और यहां दिया गया curl कमांड चलाएं. इसके लिए, इनकी जगह पर ये डालें:

  1. oauth2-client-id और oauth2-client-secret के लिए, Google Cloud के क्रेडेंशियल में मौजूद OAuth2 क्लाइंट आईडी और क्लाइंट सीक्रेट का इस्तेमाल करें
  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"
}