ฟีเจอร์ Request Sync จะทริกเกอร์คำขอ SYNC ไปยังระบบการดำเนินการตามคำขอสำหรับผู้ใช้ Google ทุกคน
ที่ใช้อุปกรณ์ซึ่งมี
agentUserId ที่ระบุเชื่อมโยงอยู่ (ซึ่งคุณ
ส่งในคำขอ SYNC เดิม) ฟีเจอร์นี้ช่วยให้คุณอัปเดตอุปกรณ์ของผู้ใช้ได้โดยไม่ต้องยกเลิกการลิงก์และลิงก์บัญชีของผู้ใช้ใหม่ ผู้ใช้ทั้งหมดที่ลิงก์กับตัวระบุนี้จะได้รับคำขอ SYNC
คุณต้องทริกเกอร์คำขอ SYNC ในกรณีต่อไปนี้
- เมื่อผู้ใช้เพิ่มอุปกรณ์ใหม่
- เมื่อผู้ใช้นำอุปกรณ์ที่มีอยู่ออก
- เมื่อผู้ใช้เปลี่ยนชื่ออุปกรณ์ที่มีอยู่
- เมื่อคุณใช้ประเภทอุปกรณ์ ลักษณะ หรือเพิ่มฟีเจอร์ใหม่ของอุปกรณ์
เริ่มต้นใช้งาน
หากต้องการใช้ฟีเจอร์ Request Sync ให้ทำตามขั้นตอนต่อไปนี้
เปิดใช้ Google HomeGraph API
-
ใน Google Cloud Console ให้ไปที่หน้า HomeGraph API
ไปที่หน้า HomeGraph API - เลือกโปรเจ็กต์ที่ตรงกับรหัสโปรเจ็กต์ smart home
- คลิกเปิดใช้
สร้างคีย์บัญชีบริการ
ทำตามวิธีการต่อไปนี้เพื่อสร้างคีย์บัญชีบริการจาก Google Cloud Console
-
ใน Google Cloud Console ให้ไปที่หน้าบัญชีบริการ
ไปที่หน้าบัญชีบริการคุณอาจต้องเลือกโปรเจ็กต์ก่อนที่จะไปยังหน้าบัญชีบริการ
คลิก สร้างบัญชีบริการ
ป้อนชื่อในช่องชื่อบัญชีบริการ
ป้อนรหัสในช่องรหัสบัญชีบริการ
ป้อนคำอธิบายในช่องคำอธิบายบัญชีบริการ
คลิกสร้างและต่อไป
จากเมนูแบบเลื่อนลงบทบาท ให้เลือกบัญชีบริการ > ผู้สร้างโทเค็นรหัสประจำตัว OpenID Connect ของบัญชีบริการ
คลิกต่อไป
คลิกเสร็จสิ้น
เลือกบัญชีบริการที่สร้างขึ้นจากรายการบัญชีบริการ แล้ว เลือก จัดการคีย์ จากเมนู การดำเนินการ
เลือกเพิ่มคีย์ > สร้างคีย์ใหม่
สำหรับประเภทคีย์ ให้เลือกตัวเลือก JSON
คลิกสร้าง ระบบจะดาวน์โหลดไฟล์ JSON ที่มีคีย์ ลงในคอมพิวเตอร์
เรียก API
HTTP
Home Graph API มีปลายทาง HTTP
- ใช้ไฟล์ JSON ของบัญชีบริการที่ดาวน์โหลดเพื่อสร้าง JSON Web Token (JWT) ดูข้อมูลเพิ่มเติมได้ที่ หัวข้อการตรวจสอบสิทธิ์โดยใช้บัญชีบริการ
- รับโทเค็นเพื่อการเข้าถึง OAuth 2.0 ที่มีขอบเขต
https://www.googleapis.com/auth/homegraphโดยใช้ oauth2l ดังนี้ - สร้างคำขอ JSON ด้วย
agentUserIdต่อไปนี้คือตัวอย่างคำขอ JSON สำหรับฟีเจอร์ Request Sync - รวม JSON ของ Request Sync และโทเค็นในคำขอ 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
- รับคำจำกัดความของบริการบัฟเฟอร์โปรโตคอลสำหรับ Home Graph API
- ทำตามเอกสารประกอบสำหรับนักพัฒนาแอป gRPC เพื่อสร้าง Stub ของไคลเอ็นต์สำหรับภาษาที่รองรับภาษาใดภาษาหนึ่ง
- เรียกเมธอด RequestSync
Node.js
Google APIs Node.js Client มีการผูกข้อมูลสำหรับ 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 } });
Java
ไลบรารีของไคลเอ็นต์ 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);
การตอบกลับข้อผิดพลาด
คุณอาจได้รับการตอบกลับข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้เมื่อเรียกฟีเจอร์ Request Sync การตอบกลับเหล่านี้จะอยู่ในรูปแบบรหัสสถานะ HTTP
400 Bad Request- เซิร์ฟเวอร์ประมวลผล คำขอที่ไคลเอ็นต์ส่งมาไม่ได้เนื่องจาก ไวยากรณ์ไม่ถูกต้อง สาเหตุที่พบบ่อย ได้แก่ JSON มีรูปแบบไม่ถูกต้องหรือใช้nullแทน "" สำหรับค่าสตริง403 Forbidden- เซิร์ฟเวอร์ประมวลผล คำขอสำหรับagentUserIdที่ระบุไม่ได้เนื่องจากเกิดข้อผิดพลาดขณะ รีเฟรชโทเค็น ตรวจสอบว่าปลายทาง OAuth ตอบกลับคำขอโทเค็นการรีเฟรชอย่างถูกต้อง และตรวจสอบสถานะการลิงก์บัญชีของผู้ใช้404 Not Found- ไม่พบทรัพยากรที่ขอ แต่อาจพร้อมใช้งานในอนาคต โดยปกติแล้วข้อผิดพลาดนี้หมายความว่าบัญชีผู้ใช้ไม่ได้ลิงก์กับ Google หรือเราได้รับagentUserIdไม่ถูกต้อง ตรวจสอบว่าagentUserIdตรงกับค่าที่ระบุในการตอบกลับ SYNC ของคุณ และคุณจัดการ Intent DISCONNECT อย่างถูกต้อง429 Too Many Requests- คำขอซิงค์พร้อมกันเกินจำนวนสูงสุดสำหรับagentUserIdที่ระบุ ผู้เรียกจะส่งคำขอซิงค์พร้อมกันได้เพียงรายการเดียวเท่านั้น เว้นแต่จะตั้งค่าแฟล็กasyncเป็น "จริง"