مجوز یک حساب

با ایجاد پروژه‌های Google Cloud و Device Access، می‌توانید یک حساب Google با یک دستگاه Google Nest پشتیبانی‌شده برای SDM API مجاز کنید.

برای مشاهده ساختارها و دستگاه‌ها، باید یک حساب Google را به حساب خود پیوند دهیدDevice Access پروژه با استفاده از PCM PCM اجازه می دهد user اجازه دادن به اجازه دادن developers برای دسترسی به ساختارها و داده های دستگاه.

در این راهنما، شما به عنوان هر دو خدمت می کنید user و developer.

  1. پیوند زیر را در مرورگر وب باز کنید و جایگزین کنید:

    1. project-id با شما Device Access Project شناسه
    2. oauth2-client-id با شناسه مشتری OAuth2 از اعتبارنامه Google Cloud شما
    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 است. در اینجا می توانید مجوزهای ساختار و دستگاه را اعطا کنید. مجوزهای خانه خود (مرحله 1) و دستگاه‌های موجود در آن خانه که توسط SDM API پشتیبانی می‌شوند (مرحله 2) را تغییر دهید، سپس روی Next کلیک کنید.
  4. در صفحه انتخاب حساب برای ادامه به نام پروژه ، جایی که نام پروژه نام پروژه Google Cloud شما است، حساب Google را که می‌خواهید برای SDM API مجاز کنید، انتخاب کنید. از همان اکانت گوگل قبلی استفاده کنید.
  5. پس از انتخاب یک حساب، ممکن است صفحه هشداری دریافت کنید که نشان می دهد Google این برنامه را تأیید نکرده است . اگر چنین است، برای ادامه، روی گزینه Advanced کلیک کنید و سپس روی Go to Project Name (ناامن) کلیک کنید. برای اطلاعات بیشتر ببینید Google این برنامه را تأیید نکرده است .
  6. در صفحه مجوز Grant Project Name ، روی Allow کلیک کنید تا پروژه اجازه دسترسی به حساب Google شما را بدهد.
  7. در صفحه تأیید انتخاب‌های خود ، مطمئن شوید که مجوزهایی که می‌خواهید اعطا کنید علامت زده شده‌اند و برای تأیید روی «اجازه» کلیک کنید.
  8. شما باید به https://www.google.com هدایت شوید. کد مجوز به عنوان پارامتر code در URL بازگردانده می شود که باید در این قالب باشد:

    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 و Client Secret از اعتبارنامه Google Cloud شما
    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 را راه‌اندازی کرده باشید، این تماس اولیه فرآیند مجوز را به پایان می‌رساند و رویدادها را فعال می‌کند.

از curl برای برقراری این تماس برای نقطه پایانی devices استفاده کنید:

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

نحوه استفاده از نشانه رفرش

همانطور که در پارامتر expires_in که توسط Google OAuth برگردانده شده است، نشانه‌های دسترسی برای API SDM فقط برای 1 ساعت معتبر هستند. اگر توکن دسترسی شما منقضی شده است، از نشانه رفرش استفاده کنید تا یک نشانه جدید دریافت کنید.

این دستور شبیه به نشانه دسترسی است، با این تفاوت که شما از یک grant_type متفاوت استفاده می‌کنید.

  1. یک ترمینال را باز کنید و دستور curl زیر را اجرا کنید و جایگزین کنید:

    1. oauth2-client-id و oauth2-client-secret با شناسه مشتری OAuth2 و Client Secret از اعتبارنامه Google Cloud شما
    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 API مراجعه کنید.

نشانه Refresh همچنان در حال انقضا است

اگر شناسه مشتری تأیید نشود، نشانه‌های تازه‌سازی می‌توانند پس از ۷ روز از کار بیفتند. انقضای توکن 7 روزه مربوط به تأییدیه های تجاری یا سندباکس نیست. یک سرویس یا حساب کاربری باید شناسه مشتری OAuth 2.0 خود را تأیید کرده و در مرحله تولید قرار دهد تا طول عمر توکن بیشتری داشته باشد. برای اطلاعات بیشتر به انقضای نشانه Refresh مراجعه کنید.

دسترسی رد شد

اگر صفحه رضایت OAuth خود را در Google Cloud تنظیم کرده باشید و نوع کاربر خارجی است، اگر بخواهید حساب را با حساب Google پیوند دهید که به عنوان کاربر آزمایشی برای برنامه شما فهرست نشده است، با خطای «دسترسی ممنوع است» دریافت خواهید کرد. . مطمئن شوید که حساب Google را به بخش تست کاربران در صفحه رضایت OAuth خود اضافه کنید.

خطای Partner Connections Manager (PCM).

برای راهنمایی در مورد هر گونه خطایی که هنگام دسترسی به PCM با آن مواجه می شوید، به مرجع خطای مدیر اتصالات شریک (PCM) مراجعه کنید.

Google این برنامه را تأیید نکرده است

SDM API از یک محدوده محدود استفاده می‌کند، به این معنی که هر برنامه‌ای که در طول مجوز از این محدوده استفاده می‌کند، «تأیید نمی‌شود» مگر اینکه تأیید OAuth API تکمیل شود. هنگام استفاده Device Access برای استفاده شخصی، تأیید OAuth API مورد نیاز نیست.

ممکن است در طول فرآیند مجوز، صفحه «Google این برنامه را تأیید نکرده است» ببینید، که اگر محدوده sdm.service در صفحه رضایت OAuth شما در Google Cloud پیکربندی نشده باشد ظاهر می شود. این صفحه را می توان با کلیک کردن روی گزینه Advanced و سپس کلیک کردن روی Go to Project Name (ناامن) دور زد.

برای اطلاعات بیشتر به صفحه برنامه تأیید نشده مراجعه کنید.

مشتری نامعتبر

هنگام تلاش برای دریافت یک نشانه دسترسی یا به‌روزرسانی، اگر یک OAuth 2.0 Client Secret را ارائه دهید، با خطای "مشتری نامعتبر" مواجه خواهید شد. مطمئن شوید که مقدار client_secret که در تماس‌های رمز دسترسی و بازخوانی استفاده می‌کنید، همان مقداری است که برای شناسه مشتری OAuth 2.0 استفاده می‌شود، همانطور که در صفحه Google Cloud Credentials شما یافت می‌شود.

درخواست نامعتبر، محدوده مورد نیاز وجود ندارد

پس از اعطای مجوزها در PCM، ممکن است با خطای "درخواست نامعتبر" با عنوان "فقدان پارامتر مورد نیاز: محدوده" مواجه شوید. اطمینان حاصل کنید که مقدار scope که در تماس های مجوز استفاده می کنید همان مقداری است که برای OAuth 2.0 Client تنظیم کرده اید، همانطور که در صفحه Google Cloud Credentials شما یافت می شود.

تغییر مسیر عدم تطابق uri

هنگام گذراندن مجوز، ممکن است با خطای "Redirect uri mismatch" مواجه شوید. مطمئن شوید که مقدار redirect_uri که در تماس‌های مجوز استفاده می‌کنید، همان مقداری است که برای OAuth 2.0 Client تنظیم کرده‌اید، همانطور که در صفحه Google Cloud Credentials شما یافت می‌شود.

مجوزهای حساب را تغییر دهید

برای اصلاح مجوزهای اعطا شده به a Device Access پروژه، یا آن را به طور کامل قطع کنید، به PCM بروید:

https://nestservices.google.com/partnerconnections

این صفحه تمام خدمات توسعه دهنده شخص ثالث را نمایش می دهد (Device Access پروژه ها) به حساب شما متصل است. را انتخاب کنید Device Access پروژه ای که می خواهید تغییر دهید از صفحه بعدی برای تغییر مجوزها به دلخواه استفاده کنید.

برای لغو فقط مجوزهای خاص برای یک سرویس مجاز ، مجوزهایی را که می خواهید لغو کنید تغییر دهید و برای ذخیره روی پیکان عقب کلیک کنید.

برای قطع کامل یک سرویس مجاز ، روی لغو پیوند حساب Google خود کلیک کنید تا همه مجوزها و نشانه‌های دسترسی که پروژه برای حساب اعطا شده است لغو شود.

اگر PCM سرویس مورد نظر را نشان نمی دهد، ممکن است لازم باشد ابتدا یک تماس لیست دستگاه برقرار کنید .

مرجع سریع

از این مرجع برای اجرای سریع مراحل مجوز a استفاده کنیدuser و حساب گوگل آنها را پیوند دهید.

برای استفاده از این مرجع سریع، هر متغیر مکان نگهدار را در نمونه کد با مقادیر مربوط به ادغام خاص خود ویرایش کنید و در صورت نیاز کپی و جایگذاری کنید:

1 PCM

پیوند زیر را در مرورگر وب باز کنید و جایگزین کنید:

  1. project-id با شما Device Access Project شناسه
  2. oauth2-client-id با شناسه مشتری OAuth2 از اعتبارنامه Google Cloud شما
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 در URL بازگردانده می شود که باید در این قالب باشد:

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 و Client Secret از اعتبارنامه Google Cloud شما
  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 تماس API

تا زمانی که اولین تماس devices.list خود را با کد دسترسی جدید خود انجام ندهید، مجوز کامل نیست. اگر قبلاً اشتراک Pub/Sub را راه‌اندازی کرده باشید، این تماس اولیه فرآیند مجوز را به پایان می‌رساند و رویدادها را فعال می‌کند.

برای تکمیل مجوز باید از یکی از فراخوان های API فهرست شده برای محدوده مشخص شده استفاده کنید.

sdm.service

دستگاه ها

برای اطلاعات بیشتر به مرجع API 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 توکن Refresh

همانطور که در پارامتر expires_in که توسط Google OAuth برگردانده شده است، نشانه‌های دسترسی برای API SDM فقط برای 1 ساعت معتبر هستند. اگر توکن دسترسی شما منقضی شده است، از نشانه رفرش استفاده کنید تا یک نشانه جدید دریافت کنید.

یک ترمینال را باز کنید و دستور curl زیر را اجرا کنید و جایگزین کنید:

  1. oauth2-client-id و oauth2-client-secret با شناسه مشتری OAuth2 و Client Secret از اعتبارنامه Google Cloud شما
  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"
}