تفويض حساب

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

لعرض البِنى والأجهزة، يجب ربط حساب Google Device Access باستخدام PCM. تتيح 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. استخدام حساب 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 فقط صالحًا لمدة ساعة واحدة، كما هو موضح في معلَمة 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. API.

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

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

تم رفض الوصول

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

خطأ في "مدير عمليات ربط الشركاء" (PCM)

للحصول على مساعدة بشأن أي أخطاء قد تحدث عند الوصول إلى تضمين نبضي مشفر (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) لإعادة التوجيه

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

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

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

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