تفويض حساب

من خلال إنشاء مشاريع Google Cloud وDevice Access، يمكنك تفويض حساب Google باستخدام جهاز Google Nest متوافق من أجل واجهة برمجة تطبيقات SDM.

لعرض البِنى والأجهزة، يجب ربط حساب Google Device Access باستخدام PCM. تسمح خدمة "إدارة العملاء" user بمنح الإذن لخدمات السماح developerبالوصول إلى بيانات الهياكل والأجهزة.

في هذا الدليل، أنت تؤدي دور 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 (الخطوة 2)، ثم انقر على التالي.
  4. في شاشة اختيار حساب للمتابعة إلى اسم المشروع، حيث يمثّل اسم المشروع اسم مشروعك على Google Cloud، اختَر حساب Google الذي تريد تفويضه باستخدام واجهة برمجة التطبيقات SDM API. استخدام حساب Google نفسه كالسابق.
  5. بعد اختيار حساب، قد تظهر لك شاشة تحذير تشير إلى أنّه لم تُثبِت Google صحة هذا التطبيق. في هذه الحالة، للمتابعة، انقر على الخيار متقدّم ثمّ انقر على الانتقال إلى اسم المشروع (غير آمن). عرض لم تتحقّق Google من ملكية هذا التطبيق للمزيد من المعلومات المعلومات.
  6. في شاشة منح إذن اسم المشروع، انقر على السماح لمنح إذن المشروع للوصول إلى حسابك على 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.

  1. افتح نافذة طرفية وابدأ طلب curl التالي، مع استبدال:

    1. oauth2-client-id وoauth2-client-secret باستخدام معرّف عميل OAuth2 وسرّ العميل من بيانات اعتماد 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 والرمز المميز للتحديث للحصول على واجهة .

إجراء مكالمة بقائمة الأجهزة

لا يكتمل التفويض حتى تُجري أول 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"
        }
      ]
    }
  ]
}

كيفية استخدام الرمز المميز للتحديث

تكون رموز الوصول إلى واجهة برمجة التطبيقات لمجموعة أدوات SDM válida لمدة ساعة واحدة فقط، كما هو موضّح في المَعلمة expires_in التي تعرضها Google OAuth. إذا انتهت صلاحية رمز الوصول، استخدِم الرمز المميّز للتحديث للحصول على رمز جديد.

يكون الأمر مشابهًا لرمز الدخول الأول، باستثناء أنك تستخدم رمز دخول grant_type

  1. افتح نافذة طرفية وشغِّل اتّباع الأمر curl، مع استبدال:

    1. oauth2-client-id وoauth2-client-secret باستخدام معرّف عميل OAuth2 وسرّ العميل من بيانات اعتماد 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 APIs.

انتهاء صلاحية الرمز المميّز لإعادة التحميل باستمرار

يمكن أن يتوقف عمل رموز إعادة التنشيط بعد 7 أيام إذا لم تتم الموافقة على معرّف العميل. انتهاء صلاحية الرمز المميّز خلال 7 أيام غير مرتبط بالسلعة التجارية أو الموافقات على وضع الحماية. ضرورة حصول خدمة أو حساب مستخدم على بروتوكول OAuth تمت الموافقة على معرّف العميل 2.0 ويتم وضعه في مرحلة الإنتاج للحصول على فترة أطول للرموز المميّزة. الاطّلاع على انتهاء صلاحية الرمز المميّز لإعادة التحميل لمزيد من المعلومات المعلومات.

تم رفض الوصول

إذا أعددت شاشة موافقة OAuth في Google Cloud وكان نوع المستخدم هو خارجي، ستظهر لك رسالة الخطأ "تم رفض الإذن بالوصول" إذا حاولت ربط الحساب بحساب Google غير مدرَج كمستخدم اختباري لتطبيقك. احرص على إضافة حساب Google إلى قسم المستخدِمون الاختبِرون في شاشة موافقة OAuth.

خطأ في "إدارة إمكانية وصول الشركاء إلى الأجهزة الذكية"

للحصول على مساعدة بشأن أي أخطاء قد تحدث عند الوصول إلى تضمين نبضي مشفر (PCM)، في هذه الحالة مدير اتصالات الشركاء (PCM) مرجع الخطأ

لم تُثبت شركة Google ملكية هذا التطبيق.

تستخدم واجهة برمجة التطبيقات SDM نطاقًا مقيّدًا، مما يعني أن أي سيتم "عدم التحقق" من التطبيقات التي تستخدم هذا النطاق خلال عملية منح الإذن إلا اكتمل التحقّق من واجهة برمجة تطبيقات OAuth. عند استخدام Device Access للاستخدام الشخصي، لا يلزم التحقق من واجهة برمجة تطبيقات OAuth.

قد تظهر لك شاشة "لم تُثبِت Google صحة هذا التطبيق" أثناء عملية التفويض، والتي تظهر إذا لم يتم ضبط نطاق sdm.service في شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth في Google Cloud. يمكن أن تكون هذه الشاشة تم تجاوزها بالنقر على الخيار Advanced (إعدادات متقدمة) ثم النقر على Go to Project (الانتقال إلى مشروع) الاسم (غير آمن):

يمكنك الاطّلاع على شاشة التطبيق الذي لم يتم التحقّق منه لمزيد من المعلومات.

عميل غير صالح

عند محاولة الحصول على رمز دخول أو رمز إعادة تحميل، ستظهر لك رسالة الخطأ "غير صالح العميل" إذا قدمت سر عميل OAuth 2.0 غير صحيح. تأكد من أن القيمة client_secret التي تستخدمها في طلبات الرمز المميّز للوصول وإعادة التحميل هي القيمة لمعرِّف عميل OAuth 2.0 المُستخدَم، كما هو موضَّح في Google Cloud بيانات الاعتماد .

طلب غير صالح، لا يتضمّن النطاق المطلوب

بعد منح الأذونات في PCM، قد تواجه خطأ "طلب غير صالح" من النوع "عدم توفّر المَعلمة المطلوبة: النطاق". تأكَّد من أنّ قيمة scope التي تستخدمها في طلبات التفويض هي نفسها القيمة التي ضبطتها لبرنامج OAuth 2.0 العميل، كما هو موضّح في صفحة سماحات Google Cloud .

عدم تطابق معرّف الموارد المنتظم (URI) لإعادة التوجيه

عند إجراء عملية التفويض، قد تواجه خطأ "عدم تطابق عنوان URL لإعادة التوجيه". يُرجى التأكّد من أنّ قيمة redirect_uri التي تستخدمها في طلبات التفويض هي: نفسه الذي أعددته لعميل OAuth 2.0، كما هو موضح في Google Cloud بيانات الاعتماد .

تعديل أذونات الحساب

لتعديل الأذونات الممنوحة Device Access لمشروع أو إلغاء ربطه تمامًا، انتقِل إلى "مركز عملائي":

https://nestservices.google.com/partnerconnections

تعرض هذه الصفحة جميع خدمات المطوّرين التابعة لجهات خارجية (Device Access المشاريع) المرتبطة بحسابك. اختيار Device Access المشروع المطلوب التغيير. استخدِم الشاشة التالية لتعديل الأذونات على النحو المطلوب.

لإبطال أذونات محدَّدة فقط لخدمة مُصرَّح بها، يمكنك تفعيل/إيقاف الأذونات التي تريد إبطالها وانقر على سهم الرجوع للحفظ.

لإلغاء ربط خدمة معتمَدة تمامًا، انقر على إلغاء ربط حسابك على Google. الحساب لإبطال جميع الأذونات ورموز الدخول التي تم منحها للمشروع المحددة للحساب.

إذا لم يعرض PCM الخدمة المطلوبة، قد تحتاج إلى عليك إجراء مكالمة قائمة الأجهزة أولاً.

مرجع سريع

استخدِم هذا المرجع لتنفيذ الخطوات اللازمة لمنح الإذن user وربط حساب Google .

لاستخدام هذا المرجع السريع، عدِّل كل متغيّر عنصر نائب في عيّنات التعليمات البرمجية. مع القيم الخاصة بعملية الدمج المحددة، وانسخها والصقها حسب الحاجة:

منفذ 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.

افتح نافذة طرفية وابدأ طلب curl التالي، مع استبدال:

  1. oauth2-client-id وoauth2-client-secret بمعرّف عميل OAuth2 وسر العميل من 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 طلب بيانات من واجهة برمجة التطبيقات

لا يكتمل التفويض حتى تُجري أول 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 فقط صالحًا لمدة ساعة واحدة، كما هو موضح في معلَمة expires_in التي يعرضها Google OAuth. إذا انتهت صلاحية رمز الوصول، استخدِم الرمز المميّز للتحديث للحصول على رمز جديد.

افتح وحدة طرفية ونفِّذ الأمر curl التالي، مع استبدال:

  1. oauth2-client-id وoauth2-client-secret بمعرّف عميل OAuth2 وسر العميل من 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"
}