Tính năng Yêu cầu đồng bộ hoá kích hoạt một yêu cầu SYNC đối với quá trình thực hiện cho bất kỳ người dùng Google nào
có thiết bị được liên kết với
agentUserId đã chỉ định (mà bạn đã
gửi trong yêu cầu SYNC ban đầu). Tính năng này cho phép bạn cập nhật thiết bị của người dùng mà không cần huỷ liên kết và liên kết lại tài khoản của họ. Tất cả người dùng được liên kết với mã nhận dạng này sẽ nhận được một yêu cầu SYNC.
Bạn phải kích hoạt một yêu cầu SYNC:
- Nếu người dùng thêm một thiết bị mới.
- Nếu người dùng xoá một thiết bị hiện có.
- Nếu người dùng đổi tên một thiết bị hiện có.
- Nếu bạn triển khai một loại thiết bị, đặc điểm mới hoặc thêm một tính năng mới cho thiết bị.
Bắt đầu
Để triển khai tính năng Yêu cầu đồng bộ hoá, hãy làm theo các bước sau:
Bật Google HomeGraph API
-
Trong Google Cloud Console, hãy chuyển đến trang HomeGraph API.
Chuyển đến trang HomeGraph API - Chọn dự án khớp với mã dự án smart home của bạn.
- Nhấp vào BẬT.
Tạo khoá tài khoản dịch vụ
Làm theo các hướng dẫn sau để tạo khoá tài khoản dịch vụ từ Google Cloud Console:
-
Trong Google Cloud Console, hãy chuyển đến trang Tài khoản dịch vụ.
Chuyển đến trang Tài khoản dịch vụ.Bạn có thể cần chọn một dự án trước khi được chuyển đến trang Tài khoản dịch vụ.
Nhấp vào Tạo tài khoản dịch vụ.
Trong trường Tên tài khoản dịch vụ, hãy nhập tên.
Trong trường Mã tài khoản dịch vụ, hãy nhập mã.
Trong trường Nội dung mô tả tài khoản dịch vụ, hãy nhập nội dung mô tả.
Nhấp vào Tạo và tiếp tục.
Trong trình đơn thả xuống Vai trò, hãy chọn Tài khoản dịch vụ > Trình tạo mã thông báo nhận dạng OpenID Connect của tài khoản dịch vụ.
Nhấp vào Tiếp tục.
Nhấp vào Xong.
Chọn tài khoản dịch vụ mà bạn vừa tạo trong danh sách tài khoản dịch vụ rồi chọn Quản lý khoá trong trình đơn Thao tác.
Chọn Thêm khoá > Tạo khoá mới.
Đối với Loại khoá, hãy chọn tuỳ chọn JSON.
Nhấp vào Tạo. Một tệp JSON chứa khoá của bạn sẽ được tải xuống máy tính.
Gọi API
HTTP
Home Graph API cung cấp một điểm cuối HTTP
- Sử dụng tệp JSON tài khoản dịch vụ đã tải xuống để tạo Mã thông báo web JSON Token (JWT). Để biết thêm thông tin, hãy xem bài viết Xác thực bằng tài khoản dịch vụ.
- Lấy mã truy cập OAuth 2.0 với phạm vi
https://www.googleapis.com/auth/homegraphbằng oauth2l: - Tạo yêu cầu JSON bằng
agentUserId. Dưới đây là yêu cầu JSON mẫu cho tính năng Yêu cầu đồng bộ hoá: - Kết hợp JSON Yêu cầu đồng bộ hoá và mã thông báo trong yêu cầu HTTP POST
của bạn đến điểm cuối Google Home Graph. Dưới đây là ví dụ về cách
đưa ra yêu cầu trong dòng lệnh bằng
curl, dưới dạng kiểm thử:
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 cung cấp một điểm cuối gRPC
- Tải định nghĩa dịch vụ bộ đệm giao thức cho Home Graph API.
- Làm theo tài liệu dành cho nhà phát triển gRPC để tạo các đoạn mã gốc của ứng dụng cho một trong những ngôn ngữ được hỗ trợ.
- Gọi phương thức RequestSync.
Node.js
Ứng dụng Node.js của Google API cung cấp các liên kết cho Home Graph API.
- Khởi chạy dịch vụ
google.homegraphbằng Thông tin xác thực mặc định của ứng dụng. - Gọi phương thức
requestSyncbằng RequestSyncDevicesRequest. Phương thức này trả về mộtPromisevới một RequestSyncDevicesResponse trống.
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
Thư viện ứng dụng HomeGraph API cho Java cung cấp các liên kết cho Home Graph API.
- Khởi chạy
HomeGraphApiServicebằng Thông tin xác thực mặc định của ứng dụng. - Gọi phương thức
requestSyncbằngRequestSyncDevicesRequest. Phương thức này trả vềReportStateAndNotificationResponsetrống.
// 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);
Phản hồi báo lỗi
Bạn có thể nhận được một trong các phản hồi báo lỗi sau đây khi gọi tính năng Yêu cầu đồng bộ hoá. Các phản hồi này có dạng mã trạng thái HTTP.
400 Bad Request– Máy chủ không thể xử lý yêu cầu do ứng dụng gửi vì cú pháp không hợp lệ. Các nguyên nhân thường gặp bao gồm JSON không hợp lệ hoặc sử dụngnullthay vì "" cho giá trị chuỗi.403 Forbidden- Máy chủ không thể xử lý yêu cầu choagentUserIdđã cho do xảy ra lỗi khi làm mới mã thông báo. Đảm bảo điểm cuối OAuth của bạn phản hồi chính xác các yêu cầu làm mới mã thông báo và kiểm tra trạng thái liên kết tài khoản của người dùng.404 Not Found– Không tìm thấy tài nguyên được yêu cầu nhưng có thể sẽ có trong tương lai. Thông thường, điều này có nghĩa là tài khoản người dùng không được liên kết với Google hoặc chúng tôi đã nhận đượcagentUserIdkhông hợp lệ. Đảm bảo rằngagentUserIdkhớp với giá trị được cung cấp trong phản hồi SYNC và bạn đang xử lý đúng cách các ý định DISCONNECT.429 Too Many Requests– Đã vượt quá số lượng yêu cầu đồng bộ hoá đồng thời tối đa choagentUserId. Trình gọi chỉ có thể đưa ra một yêu cầu đồng bộ hoá đồng thời, trừ phi cờasyncđược đặt thành true.