Permintaan Sinkronisasi memicu permintaan SYNC
ke fulfillment Anda untuk semua pengguna Google
dengan perangkat yang memiliki
agentUserId
yang terkait dengannya (yang Anda
yang dikirim dalam permintaan SYNC asli). Hal ini memungkinkan Anda memperbarui perangkat
tanpa membatalkan tautan
dan menautkan ulang akun mereka. Semua pengguna yang tertaut ke ini
ID akan menerima permintaan SYNC
.
Anda harus memicu permintaan SYNC
:
- Jika pengguna menambahkan perangkat baru.
- Jika pengguna menghapus perangkat yang sudah ada.
- Jika pengguna mengganti nama perangkat yang ada.
- Jika Anda menerapkan jenis perangkat, fitur, atau menambahkan fitur perangkat baru.
Mulai
Untuk menerapkan Permintaan Sinkronisasi, ikuti langkah-langkah berikut:
Mengaktifkan Google HomeGraph API
-
Di Google Cloud Console, buka halaman HomeGraph API.
Buka halaman HomeGraph API - Pilih project yang cocok dengan project ID smart home Anda.
- Klik ENABLE.
Membuat Kunci Akun Layanan
Ikuti petunjuk berikut untuk membuat kunci akun layanan dari Google Cloud Console:
-
Di Google Cloud Console, buka halaman Create service account key.
Buka halaman Create Service Account Key - Dari daftar Service account, pilih Akun layanan baru.
- Di kolom Nama akun layanan, masukkan nama.
- Di kolom ID akun layanan, masukkan ID.
Dari daftar Role, pilih Service Accounts > Service Account Token Creator Google.
Untuk Jenis kunci, pilih opsi JSON.
- Klik Buat. File JSON yang berisi kunci Anda {i>download<i} ke komputer Anda.
Memanggil API
HTTP
Home Graph API menyediakan endpoint HTTP
- Menggunakan file JSON akun layanan yang didownload untuk membuat Web JSON Token (JWT). Untuk informasi selengkapnya, lihat Mengautentikasi Menggunakan Akun Layanan.
- Dapatkan token akses OAuth 2.0 dengan
https://www.googleapis.com/auth/homegraph
cakupan menggunakan oauth2l: - Buat permintaan JSON dengan
agentUserId
. Berikut adalah contoh permintaan JSON untuk Request Sync: - Gabungkan JSON Permintaan Sinkronisasi dan token di HTTP POST Anda
ke endpoint Google Home Graph. Berikut adalah contoh
untuk membuat permintaan di command line menggunakan
curl
, seperti pengujian:
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 menyediakan endpoint gRPC
- Dapatkan definisi layanan buffering protokol untuk Home Graph API.
- Ikuti dokumentasi developer gRPC guna membuat stub klien untuk salah satu bahasa yang didukung.
- Panggil metode RequestSync.
Node.js
Klien Node.js Google API menyediakan binding untuk Home Graph API.
- Lakukan inisialisasi layanan
google.homegraph
menggunakan Application Default Credentials. - Panggil metode
requestSync
dengan RequestSyncDevicesRequest. Metode ini menampilkanPromise
dengan RequestSyncDevicesResponse kosong.
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 Client Library for Java menyediakan binding untuk Home Graph API.
- Lakukan inisialisasi
HomeGraphApiService
menggunakan Application Default Credentials. - Panggil metode
requestSync
denganRequestSyncDevicesRequest
. Metode ini akan menampilkanReportStateAndNotificationResponse
kosong.
// 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);
Respons error
Anda mungkin menerima salah satu respons error berikut saat memanggil Request Sync. Respons ini berbentuk kode status HTTP.
400 Bad Request
- Server tidak dapat memproses permintaan yang dikirim oleh klien karena sintaksis tidak valid. Penyebab umum sertakan format JSON yang salah atau gunakannull
dan bukan "" untuk nilai {i>string<i}.403 Forbidden
- Server tidak dapat memproses permintaan untukagentUserId
yang diberikan karena terjadi error saat memperbarui token. Pastikan endpoint OAuth Anda merespons untuk memperbarui permintaan token dan memeriksa penautan akun pengguna .404 Not Found
- Resource yang diminta tidak mungkin ditemukan, tetapi mungkin tersedia di masa mendatang. Biasanya, ini berarti bahwa akun pengguna tidak ditautkan dengan Google atau kami menerimaagentUserId
. Pastikan bahwaagentUserId
cocok dengan nilai yang diberikan di respons SYNC Anda, dan Anda menangani intent DISCONNECT.429 Too Many Requests
- Jumlah maksimum sinkronisasi serentak permintaan telah terlampaui untukagentUserId
yang diberikan. Penelepon hanya dapat mengeluarkan satu permintaan sinkronisasi serentak kecuali jikaasync
ditetapkan ke true.