ขอการซิงค์

วันที่ ประเด็นสำคัญ:

คำขอซิงค์จะทริกเกอร์คำขอ SYNC ไปยังการดำเนินการตามคำสั่งซื้อสำหรับผู้ใช้ Google ทุกคน กับอุปกรณ์ที่มีการระบุ agentUserId ที่เชื่อมโยงกับบัญชี (ซึ่งคุณ ที่ส่งไปในคำขอ SYNC เดิม) ซึ่งจะช่วยให้คุณอัปเดตผู้ใช้ อุปกรณ์ โดยไม่ยกเลิกการลิงก์และลิงก์บัญชีอีกครั้ง ผู้ใช้ทั้งหมดที่ลิงก์กับรายการนี้ จะได้รับคำขอ SYNC

คุณต้องเรียกใช้คำขอ SYNC ดังนี้

  • หากผู้ใช้เพิ่มอุปกรณ์ใหม่
  • หากผู้ใช้นำอุปกรณ์ที่มีอยู่ออก
  • หากผู้ใช้เปลี่ยนชื่ออุปกรณ์ที่มีอยู่
  • การใช้อุปกรณ์ใหม่ประเภท ลักษณะ หรือเพิ่มฟีเจอร์อุปกรณ์ใหม่

เริ่มต้นใช้งาน

หากต้องการติดตั้งใช้งาน "ขอการซิงค์" ให้ทำตามขั้นตอนต่อไปนี้

เปิดใช้ Google HomeGraph API

  1. ใน Google Cloud Console ให้ไปที่หน้า HomeGraph API

    ไปที่หน้า HomeGraph API
  2. เลือกโปรเจ็กต์ที่ตรงกับรหัสโปรเจ็กต์ smart home
  3. คลิกเปิดใช้

สร้างคีย์บัญชีบริการ

โปรดทำตามวิธีการต่อไปนี้เพื่อสร้างคีย์บัญชีบริการจาก Google Cloud Console

หมายเหตุ: โปรดตรวจสอบว่าคุณกำลังใช้โปรเจ็กต์ GCP ที่ถูกต้องเมื่อดำเนินการ ขั้นตอนเหล่านี้ คือโปรเจ็กต์ที่ตรงกับรหัสโปรเจ็กต์ smart home ของคุณ
  1. ใน Google Cloud Console ให้ไปที่หน้าสร้างคีย์บัญชีบริการ

    ไปที่หน้าสร้างคีย์บัญชีบริการ
  2. จากรายการบัญชีบริการ ให้เลือก บัญชีบริการใหม่
  3. ป้อนชื่อลงในช่องชื่อบัญชีบริการ
  4. ป้อนรหัสในช่องรหัสบัญชีบริการ
  5. จากรายการบทบาท ให้เลือกบัญชีบริการ > ผู้สร้างโทเค็นบัญชีบริการ

  6. สำหรับประเภทคีย์ ให้เลือกตัวเลือก JSON

  7. คลิกสร้าง ไฟล์ JSON ที่มีคีย์ของคุณ ไปยังคอมพิวเตอร์ของคุณ

เรียกใช้ API

HTTP

Home Graph API มีปลายทาง HTTP

  1. ใช้ไฟล์ JSON ของบัญชีบริการที่ดาวน์โหลดมาเพื่อสร้างเว็บ JSON โทเค็น (JWT) สำหรับข้อมูลเพิ่มเติม โปรดดู การตรวจสอบสิทธิ์โดยใช้บัญชีบริการ
  2. รับโทเค็นเพื่อการเข้าถึง OAuth 2.0 พร้อม กำลังใช้ https://www.googleapis.com/auth/homegraph ขอบเขต oauth2l:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. สร้างคำขอ JSON ด้วย agentUserId ตัวอย่างคำขอ JSON สำหรับการซิงค์คำขอมีดังนี้
  5. {
      "agentUserId": "user-123"
    }
    
  6. รวม JSON ของคำขอซิงค์และโทเค็นใน HTTP POST ของคุณ ไปยังปลายทาง Google Home Graph ลองดูตัวอย่างว่า เพื่อสร้างคำขอในบรรทัดคำสั่งโดยใช้ curl เป็น การทดสอบ:
  7. 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

  1. ดูคำจำกัดความของบริการบัฟเฟอร์โปรโตคอลสำหรับ Home Graph API
  2. ทำตามเอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์ gRPC เพื่อสร้างสตับลูกค้าสำหรับภาษาที่รองรับ
  3. เรียกเมธอด RequestSync

Node.js

ไคลเอ็นต์ Node.js ของ Google APIs ให้การเชื่อมโยงสำหรับ Home Graph API

  1. เริ่มต้นบริการ google.homegraph โดยใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน
  2. เรียกใช้เมธอด 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

  1. เริ่มต้น HomeGraphApiService โดยใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน
  2. เรียกใช้เมธอด 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