คำขอซิงค์จะทริกเกอร์คำขอ SYNC
ไปยังการดำเนินการตามคำสั่งซื้อสำหรับผู้ใช้ Google ทุกคน
กับอุปกรณ์ที่มีการระบุ
agentUserId
ที่เชื่อมโยงกับบัญชี (ซึ่งคุณ
ที่ส่งไปในคำขอ SYNC เดิม) ซึ่งจะช่วยให้คุณอัปเดตผู้ใช้ อุปกรณ์
โดยไม่ยกเลิกการลิงก์และลิงก์บัญชีอีกครั้ง ผู้ใช้ทั้งหมดที่ลิงก์กับรายการนี้
จะได้รับคำขอ SYNC
คุณต้องเรียกใช้คำขอ SYNC
ดังนี้
- หากผู้ใช้เพิ่มอุปกรณ์ใหม่
- หากผู้ใช้นำอุปกรณ์ที่มีอยู่ออก
- หากผู้ใช้เปลี่ยนชื่ออุปกรณ์ที่มีอยู่
- การใช้อุปกรณ์ใหม่ประเภท ลักษณะ หรือเพิ่มฟีเจอร์อุปกรณ์ใหม่
เริ่มต้นใช้งาน
หากต้องการติดตั้งใช้งาน "ขอการซิงค์" ให้ทำตามขั้นตอนต่อไปนี้
เปิดใช้ Google HomeGraph API
-
ใน Google Cloud Console ให้ไปที่หน้า HomeGraph API
ไปที่หน้า HomeGraph API - เลือกโปรเจ็กต์ที่ตรงกับรหัสโปรเจ็กต์ smart home
- คลิกเปิดใช้
สร้างคีย์บัญชีบริการ
โปรดทำตามวิธีการต่อไปนี้เพื่อสร้างคีย์บัญชีบริการจาก Google Cloud Console
-
ใน Google Cloud Console ให้ไปที่หน้าสร้างคีย์บัญชีบริการ
ไปที่หน้าสร้างคีย์บัญชีบริการ - จากรายการบัญชีบริการ ให้เลือก บัญชีบริการใหม่
- ป้อนชื่อลงในช่องชื่อบัญชีบริการ
- ป้อนรหัสในช่องรหัสบัญชีบริการ
จากรายการบทบาท ให้เลือกบัญชีบริการ > ผู้สร้างโทเค็นบัญชีบริการ
สำหรับประเภทคีย์ ให้เลือกตัวเลือก JSON
- คลิกสร้าง ไฟล์ JSON ที่มีคีย์ของคุณ ไปยังคอมพิวเตอร์ของคุณ
เรียกใช้ API
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
- ดูคำจำกัดความของบริการบัฟเฟอร์โปรโตคอลสำหรับ 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 } });
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);
การตอบกลับข้อผิดพลาด
คุณอาจได้รับการตอบกลับข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้เมื่อเรียกใช้ "ขอการซิงค์" การตอบกลับเหล่านี้จะมาในรูปแบบรหัสสถานะ HTTP
400 Bad Request
- เซิร์ฟเวอร์ประมวลผลไม่ได้ คำขอที่ลูกค้าส่งมาเนื่องจากไวยากรณ์ไม่ถูกต้อง สาเหตุที่พบบ่อย มี JSON รูปแบบที่ไม่ถูกต้องหรือใช้null
แทน "" สำหรับค่าสตริง403 Forbidden
- เซิร์ฟเวอร์ไม่สามารถประมวลผล คำขอสำหรับagentUserId
ที่ระบุเนื่องจากเกิดข้อผิดพลาดขณะ การรีเฟรชโทเค็น ตรวจสอบว่าปลายทาง OAuth ตอบสนอง อย่างถูกต้องเพื่อรีเฟรชคำขอโทเค็นและตรวจสอบการลิงก์บัญชีของผู้ใช้ สถานะ404 Not Found
- ไม่สามารถทรัพยากรที่ขอ พบ แต่อาจมีให้ใช้งานในอนาคต โดยทั่วไปแล้วหมายความว่า บัญชีผู้ใช้ไม่ได้ลิงก์กับ Google หรือเราได้รับagentUserId
ตรวจสอบว่าagentUserId
ตรงกับค่าที่ระบุใน การตอบสนองSYNC และ การจัดการ Intent ของ ยกเลิกการเชื่อมต่อ429 Too Many Requests
- จำนวนสูงสุดของการซิงค์พร้อมกัน เกินขีดจำกัดสำหรับagentUserId
ที่ระบุ ผู้โทร อาจส่งคำขอซิงค์พร้อมกันได้เพียง 1 รายการเท่านั้น เว้นแต่async
ตั้งค่าสถานะเป็น true