הבקשה Request Sync מפעילה בקשת SYNC
לביצוע הזמנה עבור כל משתמש Google
עם מכשירים שמשויך אליהם agentUserId
ספציפי (ששלחתם בבקשת הסנכרון המקורית). כך תוכלו לעדכן את המכשירים של המשתמשים בלי לבטל את הקישור של החשבון שלהם ולקשר אותו מחדש. כל המשתמשים שמקושרים למזהה הזה יקבלו בקשה.SYNC
צריך להפעיל בקשת SYNC
:
- אם המשתמש מוסיף מכשיר חדש.
- אם המשתמש מסיר מכשיר קיים.
- אם המשתמש משנה את השם של מכשיר קיים.
- אם מטמיעים סוג מכשיר חדש, מאפיין חדש או מוסיפים תכונה חדשה למכשיר.
שנתחיל?
כדי להטמיע את התכונה 'בקשת סנכרון', פועלים לפי השלבים הבאים:
הפעלת Google HomeGraph API
-
ב-Google Cloud Console, עוברים לדף HomeGraph API.
כניסה לדף HomeGraph API - בוחרים את הפרויקט שתואם למזהה הפרויקט smart home.
- לוחצים על הפעלה.
יצירת מפתח של חשבון שירות
כדי ליצור מפתח לחשבון שירות מ-Google Cloud Console, פועלים לפי ההוראות הבאות:
-
ב-Google Cloud Console, עוברים לדף Service accounts.
מעבר לדף Service Accountsיכול להיות שתצטרכו לבחור פרויקט לפני שתועברו לדף 'חשבונות שירות'.
לוחצים על
יצירת חשבון שירות.כותבים שם בשדה Service account name.
מזינים מזהה בשדה Service account ID.
כותבים תיאור בשדה Service account description.
לוחצים על יצירה והמשך.
בתפריט הנפתח Role, בוחרים באפשרות Service Accounts > Service Account OpenID Connect Identity Token Creator.
לוחצים על המשך.
לוחצים על סיום.
בוחרים את חשבון השירות שיצרתם מהרשימה של חשבונות השירות ובוחרים באפשרות ניהול מפתחות בתפריט
פעולות.בוחרים באפשרות Add key (הוספת מפתח) > Create new key (יצירת מפתח חדש).
בסוג המפתח, בוחרים באפשרות JSON.
לוחצים על יצירה. קובץ JSON שמכיל את המפתח יורד למחשב.
שליחת קריאה ל-API
HTTP
Home Graph API מספק נקודת קצה (endpoint) של 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 מספק נקודת קצה (endpoint) של gRPC
- אפשר לקבל את הגדרת השירות של Protocol Buffers עבור Home Graph API.
- פועלים לפי ההוראות בתיעוד למפתחים של gRPC כדי ליצור stub של לקוח לאחת מהשפות הנתמכות.
- מפעילים את ה-method RequestSync.
Node.js
הלקוח של Google APIs Node.js מספק קשירות ל-Home Graph API.
- מאתחלים את שירות
google.homegraph
באמצעות Application Default Credentials. - מבצעים קריאה לשיטה
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 } });
Java
ספריית הלקוח של HomeGraph API ל-Java מספקת קשירות ל-Home Graph API.
- מאתחלים את
HomeGraphApiService
באמצעות Application Default Credentials. - מפעילים את השיטה
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);
תגובות שגיאה
יכול להיות שתקבלו אחת מהתגובות הבאות של שגיאה כשמתקשרים אל Request Sync. התשובות האלה מגיעות בצורה של קודי סטטוס HTTP.
-
400 Bad Request
– השרת לא הצליח לעבד את הבקשה שנשלחה מהלקוח בגלל תחביר לא תקין. סיבות נפוצות לכך הן JSON לא תקין או שימוש ב-null
במקום '' לערך מחרוזת. -
403 Forbidden
– השרת לא הצליח לעבד את הבקשה עבורagentUserId
בגלל שגיאה במהלך רענון האסימון. מוודאים שנקודת הקצה (endpoint) של OAuth מגיבה בצורה נכונה לבקשות לרענון טוקן, ובודקים את סטטוס קישור החשבון של המשתמש. -
404 Not Found
– לא נמצא המשאב המבוקש, אבל יכול להיות שהוא יהיה זמין בעתיד. בדרך כלל, המשמעות היא שחשבון המשתמש לא מקושר ל-Google או שקיבלנוagentUserId
לא תקין. חשוב לוודא שהערך שלagentUserId
זהה לערך שצוין בתגובת SYNC, ושהטיפול בכוונות DISCONNECT מתבצע בצורה תקינה. 429 Too Many Requests
- חלה חריגה מהמספר המקסימלי של בקשות סנכרון בו-זמניות עבורagentUserId
. המתקשר יכול להגיש רק בקשת סנכרון אחת בו-זמנית, אלא אם הדגלasync
מוגדר כ-true.