Yêu cầu đồng bộ hoá sẽ kích hoạt một yêu cầu SYNC
đối với phương thức thực hiện của bạn cho bất kỳ người dùng Google nào
với các thiết bị có
agentUserId
được liên kết với các trang web đó (mà bạn
được gửi trong yêu cầu SYNC ban đầu). Điều này cho phép bạn cập nhật thiết bị
mà không cần huỷ liên kết và liên kết lại tài khoản. Tất cả người dùng được liên kết với
mã nhận dạng sẽ nhận được 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á 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 hoặc thêm một tính năng mới của thiết bị.
Bắt đầu
Để triển khai tính năng đồng bộ hoá yêu cầu, 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.
Truy cập trang API HomeGraph - 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ụ
Hãy làm theo những hướng dẫn sau để tạo khoá tài khoản dịch vụ trên Google Cloud Console:
-
Trong Google Cloud Console, hãy chuyển đến trang Tạo khoá tài khoản dịch vụ.
Chuyển đến trang Tạo khoá tài khoản dịch vụ - Trong danh sách Tài khoản dịch vụ, hãy chọn Tài khoản dịch vụ mới.
- 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ột mã.
Trong danh sách Vai trò, hãy chọn Tài khoản dịch vụ > Người tạo mã thông báo cho tài khoản dịch vụ.
Đối với Loại khoá, hãy chọn JSON.
- Nhấp vào Tạo. Tệp JSON chứa khoá của bạn tải xuống máy tính của bạn.
Gọi API
HTTP
Home Graph API cung cấp một điểm cuối HTTP
- Sử dụng tệp JSON của tài khoản dịch vụ đã tải xuống để tạo một trang web JSON Mã thông báo (JWT). Để biết thêm thông tin, hãy xem Xác thực bằng tài khoản dịch vụ.
- Lấy mã truy cập OAuth 2.0 bằng
https://www.googleapis.com/auth/homegraph
phạm vi đang sử dụ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 POST qua HTTP
yêu cầu đến điểm cuối Google Home Graph. Sau đây là ví dụ về cách
để thực hiện yêu cầu trong dòng lệnh bằng cách sử dụng
curl
, như một bài 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ụ vùng đệ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 mã ứng dụng khách cho một trong các ngôn ngữ được hỗ trợ.
- Gọi phương thức RequestSync.
Node.js
Ứng dụng Node.js của API Google cung cấp các mối liên kết cho Home Graph API.
- Khởi động dịch vụ
google.homegraph
bằng Thông tin xác thực mặc định của ứng dụng. - Gọi phương thức
requestSync
bằng RequestSyncDevicesRequest. Phương thức này trả về mộtPromise
có 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 API HomeGraph cho Java cung cấp các liên kết cho API Home Graph.
- Khởi động
HomeGraphApiService
bằng Thông tin xác thực mặc định của ứng dụng. - Gọi phương thức
requestSync
bằngRequestSyncDevicesRequest
. Phương thức này sẽ trả về mộtReportStateAndNotificationResponse
trố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 lỗi
Bạn có thể nhận được một trong các phản hồi lỗi sau đây khi gọi Request Sync. 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 mà máy khách gửi do cú pháp không hợp lệ. Nguyên nhân thường gặp bao gồm JSON không đúng định dạng hoặc sử dụngnull
thay vì "" cho một 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 trong 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 một cách chính xác để làm mới yêu cầu mã thông báo và kiểm tra hoạt động liên kết tài khoản của người dùng trạng thái.404 Not Found
– Tài nguyên được yêu cầu không thể tìm thấy 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 được thông báoagentUserId
. Đảm bảo rằngagentUserId
khớp với giá trị được cung cấp trong phản hồi SYNC của bạn và bạn đã ổn xử lý ý định HUỶ KẾT NỐI.429 Too Many Requests
– Số lượt đồng bộ hoá đồng thời tối đa đã vượt quá yêu cầu đối vớiagentUserId
đã cho. Một người gọi chỉ có thể đưa ra một yêu cầu đồng bộ hoá đồng thời trừ phiasync
cờ được đặt thành true.