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

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

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

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

  1. इस लिंक को किसी वेब पर खोलें इसे बदला जा रहा है:

    1. आपके Device Access Project आईडी का इस्तेमाल project-id
    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 की अनुमतियों वाली स्क्रीन, 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. oauth2-client-id और oauth2-client-secret अपने ग्राहक आईडी और OAuth2 क्लाइंट आईडी के साथ Google क्लाउड क्रेडेंशियल
    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. oauth2-client-id और oauth2-client-secret अपने ग्राहक आईडी और OAuth2 क्लाइंट आईडी के साथ Google क्लाउड क्रेडेंशियल
    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 के बारे में ज़्यादा जानने के लिए, OAuth 2.0 का इस्तेमाल करके, Google को ऐक्सेस करना' लेख देखें APIs.

रीफ़्रेश टोकन की समयसीमा बार-बार खत्म हो रही है

रीफ़्रेश टोकन सात दिनों के बाद काम करना बंद कर सकते हैं. ऐसा होने की एक वजह यह हो सकती है कि क्लाइंट आईडी को मंज़ूरी न मिली हो. सात दिन के बाद टोकन की समयसीमा खत्म हो जाती है. यह समयसीमा, व्यावसायिक या सैंडबॉक्स से जुड़ी अनुमतियों से नहीं जुड़ी है. किसी सेवा या उपयोगकर्ता खाते को टोकन की लाइफ़सीमा बढ़ाने के लिए, OAuth 2.0 क्लाइंट आईडी को मंज़ूरी देनी होगी और उसे प्रोडक्शन में डालना होगा. ज़्यादा जानकारी के लिए, रीफ़्रेश टोकन की समयसीमा खत्म होने की तारीख देखें जानकारी.

ऐक्सेस करने की मंज़ूरी नहीं मिली

अगर आपने Google Cloud में OAuth की सहमति वाली स्क्रीन सेट अप की है और उपयोगकर्ता का टाइप बाहरी है, इसलिए आपको "ऐक्सेस नहीं दिया गया" दिखेगा गड़बड़ी हुई, अगर आपको टेस्ट यूज़र के तौर पर शामिल नहीं किए गए किसी Google खाते से लिंक करने की कोशिश करें आपके ऐप्लिकेशन के लिए. जांच करने वाले उपयोगकर्ता सेक्शन में Google खाता जोड़ना न भूलें OAuth की सहमति वाली स्क्रीन में.

पार्टनर कनेक्शन मैनेजर (पीसीएम) की गड़बड़ी

ऐक्सेस करते समय होने वाली किसी भी गड़बड़ी पर मदद के लिए PCM, देखें पार्टनर कनेक्शन मैनेजर (पीसीएम) गड़बड़ी का रेफ़रंस.

Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है

SDM API, पाबंदी वाले स्कोप का इस्तेमाल करता है. इसका मतलब है कि अनुमति के दौरान इस स्कोप का इस्तेमाल करने वाले सभी ऐप्लिकेशन "बिना पुष्टि वाले" के तौर पर दिखेंगे. ऐसा तब तक होगा, जब तक OAuth API की पुष्टि पूरी नहीं हो जाती. इसके लिए Device Access का इस्तेमाल करते समय निजी इस्तेमाल के लिए, OAuth एपीआई की पुष्टि की ज़रूरत नहीं है.

अनुमति देने की प्रोसेस के दौरान, आपको "Google ने इस ऐप्लिकेशन की पुष्टि नहीं की है" स्क्रीन दिख सकती है. यह स्क्रीन तब दिखती है, जब Google Cloud में आपकी OAuth सहमति स्क्रीन पर sdm.service स्कोप कॉन्फ़िगर न किया गया हो. यह स्क्रीन इनमें से कोई भी हो सकती है: इसे बायपास करने के लिए, बेहतर विकल्प पर क्लिक करें और फिर 'प्रोजेक्ट' पर जाएं' पर क्लिक करें नाम (असुरक्षित).

ज़्यादा जानकारी के लिए, पुष्टि नहीं की गई ऐप्लिकेशन स्क्रीन देखें.

अमान्य क्लाइंट

ऐक्सेस या रीफ़्रेश टोकन पाने की कोशिश करते समय आपको "अमान्य क्लाइंट" अगर आपने गलत OAuth 2.0 क्लाइंट सीक्रेट दिया है, तो इस गड़बड़ी को ठीक करें. पक्का करें कि ऐक्सेस और रीफ़्रेश टोकन कॉल में इस्तेमाल की जा रही client_secret वैल्यू में से एक है के लिए, आपके Google क्लाउड क्रेडेंशियल करें.

अमान्य अनुरोध, ज़रूरी दायरा मौजूद नहीं है

PCM में अनुमति देने के बाद, आपके पास "अमान्य अनुरोध" "ज़रूरी पैरामीटर मौजूद नहीं है: स्कोप" की गड़बड़ी. पक्का करें कि अनुमति वाले कॉल में scope की वैल्यू वही है जो आपने OAuth 2.0 क्लाइंट के लिए सेट की है. जैसा कि आपके Google Cloud में मिला है क्रेडेंशियल करें.

रीडायरेक्ट यूआरआई मेल नहीं खाता

अनुमति देने के दौरान, आपको "दूसरे वेबलिंक पर भेजने वाले यूआरएल से मेल न खाने वाला" गड़बड़ी का सामना करना पड़ सकता है गड़बड़ी. पक्का करें कि अनुमति देने वाले कॉल में, redirect_uri वैल्यू का इस्तेमाल किया जा रहा है इसे OAuth 2.0 क्लाइंट के लिए सेट किया गया है, जैसा कि Google क्लाउड क्रेडेंशियल करें.

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

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

https://nestservices.google.com/partnerconnections

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

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

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

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

झटपट संदर्भ

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

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

1 पीसीएम

इस लिंक को किसी वेब पर खोलें इसे बदला जा रहा है:

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