Permintaan Sinkronisasi memicu permintaan SYNC
ke fulfillment Anda untuk setiap pengguna
Google dengan perangkat yang memiliki
agentUserId
tertentu yang terkait dengannya (yang Anda
kirim dalam permintaan SYNC asli). Dengan begitu, Anda dapat mengupdate perangkat pengguna tanpa membatalkan tautan dan menautkan ulang akun mereka. Semua pengguna yang terhubung ke ID ini akan menerima permintaan SYNC
.
Anda harus memicu permintaan SYNC
:
- Jika pengguna menambahkan perangkat baru.
- Jika pengguna menghapus perangkat yang ada.
- Jika pengguna mengganti nama perangkat yang ada.
- Jika Anda menerapkan jenis perangkat baru, fitur, atau menambahkan fitur perangkat baru.
Memulai
Untuk menerapkan Request Sync, 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 smart home ID project Anda.
- Klik AKTIFKAN.
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 Buat Kunci Akun Layanan - Dari daftar Akun layanan, 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.
Untuk Key type, pilih opsi JSON.
- Klik Create. File JSON yang berisi kunci yang didownload ke komputer Anda.
Memanggil API
HTTP
Home Graph API menyediakan endpoint HTTP
- Gunakan file JSON akun layanan yang didownload untuk membuat Token Web JSON (JWT). Untuk informasi selengkapnya, lihat Mengautentikasi Menggunakan Akun Layanan.
- Dapatkan token akses OAuth 2.0 dengan cakupan
https://www.googleapis.com/auth/homegraph
menggunakan oauth2l: - Buat permintaan JSON dengan
agentUserId
. Berikut adalah contoh permintaan JSON untuk Request Sync: - Gabungkan JSON Request Sync dan token dalam permintaan HTTP POST
ke endpoint Google Home Graph. Berikut adalah contoh cara
membuat permintaan dalam command line menggunakan
curl
, sebagai 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 untuk 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.
- Inisialisasi layanan
google.homegraph
menggunakan Kredensial Default Aplikasi. - 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
Library Klien HomeGraph API untuk Java menyediakan binding untuk Home Graph API.
- Inisialisasi
HomeGraphApiService
menggunakan Kredensial Default Aplikasi. - Panggil metode
requestSync
denganRequestSyncDevicesRequest
. Metode ini 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 meliputi format JSON yang salah atau penggunaannull
, bukan "" untuk nilai string.403 Forbidden
- Server tidak dapat memproses permintaan untukagentUserId
tertentu karena terjadi error saat memuat ulang token. Pastikan endpoint OAuth Anda merespons dengan benar untuk memperbarui permintaan token dan memeriksa status penautan akun pengguna.404 Not Found
- Resource yang diminta tidak dapat ditemukan, tetapi mungkin tersedia di masa mendatang. Biasanya, hal ini berarti bahwa akun pengguna tidak ditautkan dengan Google atau kami menerimaagentUserId
yang tidak valid. PastikanagentUserId
cocok dengan nilai yang diberikan dalam respons SYNC, dan Anda menangani intent DISCONNECT dengan benar.429 Too Many Requests
- Jumlah maksimum permintaan sinkronisasi serentak telah terlampaui untukagentUserId
yang ditentukan. Pemanggil hanya dapat menerbitkan satu permintaan sinkronisasi serentak, kecuali jika flagasync
ditetapkan ke true (benar).