يؤدي طلب المزامنة إلى إرسال طلب SYNC إلى عملية التنفيذ لأي مستخدم على Google
لديه أجهزة مرتبطة بـ
agentUserId المحدّد (الذي
أرسلته في طلب المزامنة الأصلي). يتيح لك ذلك تحديث أجهزة المستخدمين
بدون إلغاء ربط حساباتهم وإعادة ربطها. سيتلقّى جميع المستخدمين المرتبطين بهذا المعرّف طلبًا من "SYNC".
يجب إرسال طلب SYNC:
- إذا أضاف المستخدم جهازًا جديدًا
- إذا أزال المستخدم جهازًا حاليًا
- إذا أعاد المستخدم تسمية جهاز حالي
- إذا نفّذت نوع جهاز أو سمة جديدة أو أضفت ميزة جديدة إلى الجهاز
البدء
لتنفيذ ميزة "طلب المزامنة"، اتّبِع الخطوات التالية:
تفعيل Google HomeGraph API
-
في Google Cloud Console، انتقِل إلى صفحة HomeGraph API.
الانتقال إلى صفحة HomeGraph API - اختَر المشروع الذي يتطابق مع رقم تعريف مشروعك على smart home.
- انقر على تفعيل.
إنشاء مفتاح حساب خدمة
اتّبِع هذه التعليمات لإنشاء مفتاح حساب خدمة من Google Cloud Console:
-
في Google Cloud Console، انتقِل إلى صفحة حسابات الخدمة.
انتقِل إلى صفحة "حسابات الخدمة".قد تحتاج إلى اختيار مشروع قبل الانتقال إلى صفحة "حسابات الخدمة".
انقر على إنشاء حساب خدمة.
في حقل اسم حساب الخدمة، أدخِل اسمًا.
في حقل رقم تعريف حساب الخدمة، أدخِل رقم تعريف.
في حقل وصف حساب الخدمة، أدخِل وصفًا.
انقر على إنشاء ومتابعة.
من القائمة المنسدلة الدور، اختَر حسابات الخدمة > أداة إنشاء الرمز المميّز لهوية OpenID Connect لحساب الخدمة.
انقر على متابعة.
انقر على تم.
اختَر حساب الخدمة الذي أنشأته للتو من قائمة حسابات الخدمة، ثم اختَر إدارة المفاتيح من قائمة الإجراءات.
انقر على إضافة مفتاح > إنشاء مفتاح جديد.
بالنسبة إلى نوع المفتاح، اختَر JSON.
انقر على إنشاء. يتم تنزيل ملف JSON يحتوي على مفتاحك على جهاز الكمبيوتر.
استدعاء واجهة برمجة التطبيقات
HTTP
توفّر واجهة برمجة التطبيقات Home Graph API نقطة نهاية HTTP
- استخدِم ملف JSON لحساب الخدمة الذي تم تنزيله لإنشاء رمز JSON مميّز للويب (JWT). لمزيد من المعلومات، يُرجى الاطّلاع على مقالة المصادقة باستخدام حساب خدمة.
- احصل على رمز مميز للوصول إلى OAuth 2.0 باستخدام نطاق
https://www.googleapis.com/auth/homegraphمن خلال oauth2l: - أنشئ طلب JSON باستخدام
agentUserId. في ما يلي نموذج لطلب JSON لطلب المزامنة: - اجمع بين ملف JSON الخاص بطلب المزامنة والرمز المميّز في طلب HTTP POST
إلى نقطة نهاية Google Home Graph. في ما يلي مثال على كيفية
إجراء الطلب في سطر الأوامر باستخدام
curl، كإجراء اختباري:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "user-123" }
curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d @request-body.json \ "https://homegraph.googleapis.com/v1/devices:requestSync"
gRPC
توفّر واجهة برمجة التطبيقات Home Graph API نقطة نهاية gRPC
- احصل على تعريف خدمة Protocol Buffers لواجهة Home Graph API.
- اتّبِع مستندات مطوّري gRPC لإنشاء رموز برمجية بديلة للعميل لإحدى اللغات المتوافقة.
- استدعِ طريقة RequestSync.
Node.js
يوفّر عميل Node.js في Google APIs عمليات ربط لواجهة Home Graph API.
- ابدأ خدمة
google.homegraphباستخدام بيانات الاعتماد التلقائية للتطبيق. - استدعِ طريقة
requestSyncباستخدام RequestSyncDevicesRequest. وتعرضPromiseمع RequestSyncDevicesResponse فارغ.
const homegraphClient = homegraph({ version: 'v1', auth: new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/homegraph' }) }); const res = await homegraphClient.devices.requestSync({ requestBody: { agentUserId: 'PLACEHOLDER-USER-ID', async: false } });
جافا
توفّر مكتبة عملاء HomeGraph API للغة Java عمليات ربط لـ Home Graph API.
- ابدأ إعداد
HomeGraphApiServiceباستخدام بيانات الاعتماد التلقائية للتطبيق. - استدعِ طريقة
requestSyncباستخدامRequestSyncDevicesRequest. وتعرض السمةReportStateAndNotificationResponseفارغة.
// Get Application Default credentials. GoogleCredentials credentials = GoogleCredentials.getApplicationDefault() .createScoped(List.of("https://www.googleapis.com/auth/homegraph")); // Create Home Graph service client. HomeGraphService homegraphService = new HomeGraphService.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), new HttpCredentialsAdapter(credentials)) .setApplicationName("HomeGraphExample/1.0") .build(); // Request sync. RequestSyncDevicesRequest request = new RequestSyncDevicesRequest().setAgentUserId("PLACEHOLDER-USER-ID").setAsync(false); homegraphService.devices().requestSync(request);
الردود التي تتضمّن أخطاء
قد تتلقّى أحد ردود الخطأ التالية عند طلب المزامنة. وتأتي هذه الردود في شكل رموز حالة HTTP.
400 Bad Request: لم يتمكّن الخادم من معالجة الطلب الذي أرسله العميل بسبب بنية غير صالحة. تشمل الأسباب الشائعة استخدام JSON بتنسيق غير صحيح أو استخدامnullبدلاً من "" لقيمة سلسلة.-
403 Forbidden: تعذّر على الخادم معالجة الطلب لـagentUserIdالمحدّد بسبب حدوث خطأ أثناء إعادة تحميل الرمز المميّز. تأكَّد من أنّ نقطة نهاية OAuth تستجيب بشكل صحيح لطلبات الرموز المميزة لإعادة التحميل، وتحقَّق من حالة ربط حساب المستخدم. 404 Not Found- تعذّر العثور على المورد المطلوب، ولكن قد يكون متاحًا في المستقبل. يعني هذا عادةً أنّ حساب المستخدم غير مرتبط بحساب Google أو أنّنا تلقّيناagentUserIdغير صالح. يُرجى التأكّد من أنّagentUserIdيتطابق مع القيمة المقدَّمة في ردّ SYNC، ومن أنّك تتعامل بشكل صحيح مع طلبات DISCONNECT.429 Too Many Requests- تم تجاوز الحد الأقصى لعدد طلبات المزامنة المتزامنة لـagentUserIdالمحددة. يمكن للمتصل إصدار طلب مزامنة متزامن واحد فقط ما لم يتم ضبط العلامةasyncعلى "صحيح".