התכונה 'בקשת סנכרון' מפעילה בקשת SYNC
למילוי ההזמנות לכל משתמש Google שיש לו מכשירים שמשויכים אליהם agentUserId
(ששלחתם בבקשת הסנכרון המקורית). כך אפשר לעדכן את המכשירים של המשתמשים
בלי לבטל את הקישור של החשבון שלהם ולקשר אותו מחדש. כל המשתמשים שמקושרים למזהה הזה יקבלו בקשת SYNC
.
צריך להפעיל בקשת SYNC
:
- אם המשתמש מוסיף מכשיר חדש.
- אם המשתמש מסיר מכשיר קיים.
- אם המשתמש משנה שם של מכשיר קיים.
- אם אתם מטמיעים סוג מכשיר חדש או תכונה חדשה, או מוסיפים תכונה חדשה במכשיר.
שנתחיל?
כדי ליישם את בקשת הסנכרון, יש לבצע את השלבים הבאים:
הפעלת Google Home Graph API
-
ברכיב Google Cloud Console, עוברים לדף Home Graph API.
לדף Home Graph API - צריך לבחור את הפרויקט שתואם למזהה הפרויקט ב-smart home.
- לוחצים על הפעלה.
יצירת מפתח לחשבון שירות
כדי ליצור מפתח לחשבון שירות מ-Google Cloud Console, יש לפעול לפי ההוראות הבאות:
-
באפליקציית Google Cloud Console, עוברים לדף Create service account key.
כניסה לדף Create Service Account Key - ברשימה Service account בוחרים באפשרות New service account.
- כותבים שם בשדה Service account name.
- מזינים מזהה בשדה Service account ID.
ברשימה Role בוחרים באפשרות Service Accounts > Service Account Token Creator.
בשדה Key type, בוחרים באפשרות 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
- מורידים את ההגדרה של שירות מאגר נתונים זמני של פרוטוקולים ל-Home Graph API.
- יש לעיין במסמכי התיעוד למפתחים בנושא gRPC כדי ליצור מודלים של לקוחות (stubs) עבור אחת מהשפות הנתמכות.
- מפעילים את השיטה RequestSync.
Node.js
לקוח Node.js של Google APIs מספק קישורים ל-Home Graph API.
- מפעילים את השירות
google.homegraph
באמצעות Application Default Credentials. - מפעילים את ה-method
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
ספריית הלקוח של Home Graph 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);
תגובות לשגיאות
יכול להיות שאחת מתגובות השגיאה הבאות תופיע כשתתבצע הפעלה של 'בקשה לסנכרון'. התגובות האלה מגיעות בצורת קודי מצב של HTTP.
400 Bad Request
– השרת לא הצליח לעבד את הבקשה שנשלחה על ידי הלקוח בגלל תחביר לא חוקי. יש כמה סיבות נפוצות לכך: פורמט JSON שגוי או שימוש ב-null
במקום ב-"" בערך מחרוזת.403 Forbidden
– השרת לא הצליח לעבד את הבקשה שלagentUserId
עקב שגיאה במהלך רענון האסימון. מוודאים שנקודת הקצה ב-OAuth מגיבה כראוי לרענון בקשות לאסימונים ולבדוק את סטטוס קישור החשבון של המשתמש.404 Not Found
– לא ניתן למצוא את המשאב המבוקש אבל יכול להיות שהוא יהיה זמין בעתיד. בדרך כלל, המשמעות היא שחשבון המשתמש לא מקושר ל-Google או שקיבלנוagentUserId
לא תקין. חשוב לוודא שה-agentUserId
תואם לערך שצוין בתשובה של הסנכרון, ושאתם מטפלים באובייקטים מסוג DISCONNECT בצורה נכונה.429 Too Many Requests
– חלה חריגה מהמספר המקסימלי של בקשות לסנכרון בו-זמנית ל-agentUserId
הנתון. המתקשר יכול לשלוח רק בקשת סנכרון אחת בו-זמנית, אלא אם הדגלasync
מוגדר ל-True.