Senkronizasyon İsteği, herhangi bir Google kullanıcısı için sipariş karşılama ile ilgili SYNC
isteğini tetikler
ve
Bunlarla ilişkilendirilmiş agentUserId
orijinal SENKRONİZASYON isteği içinde gönderilir). Bu sayede, kullanıcılarınızın cihazlar
ve yeniden bağlamadan gerçekleşebilir. Buna bağlı tüm kullanıcılar
tanımlayıcı bir SYNC
isteği alır.
Bir SYNC
isteğini tetiklemeniz gerekir:
- Kullanıcı yeni bir cihaz eklerse.
- Kullanıcının mevcut cihazı kaldırması.
- Kullanıcı mevcut bir cihazı yeniden adlandırırsa.
- Yeni bir cihaz türü veya özelliği uygularsanız ya da yeni cihaz özelliği eklerseniz.
Başlayın
Senkronizasyon İsteğini uygulamak için aşağıdaki adımları uygulayın:
Google HomeGraph API'yi etkinleştirme
-
Google Cloud Console uygulamasında HomeGraph API sayfasına gidin.
HomeGraph API sayfasına gidin - smart home proje kimliğinizle eşleşen projeyi seçin.
- ETKİNLEŞTİR'i tıklayın.
Hizmet Hesabı Anahtarı Oluşturma
Google Cloud Console öğesinden bir hizmet hesabı anahtarı oluşturmak için şu talimatları uygulayın:
-
Google Cloud Console sayfasında Hizmet hesabı anahtarı oluştur sayfasına gidin.
Hizmet Hesabı Anahtarı Oluşturma sayfasına git - Hizmet hesabı listesinden Yeni hizmet hesabı.
- Hizmet hesabı adı alanına bir ad girin.
- Hizmet hesabı kimliği alanına bir kimlik girin.
Role (Rol) listesinden Service Accounts (Hizmet Hesapları) > Hizmet Hesabı Jetonu Oluşturucu.
Anahtar türü olarak JSON seçeneğini belirleyin.
- Oluştur'u tıklayın. Anahtarınızı içeren bir JSON dosyası bilgisayarınıza indirilir.
API'yi çağırma
HTTP
Home Graph API, bir HTTP uç noktası sağlar
- JSON Web oluşturmak için indirilen hizmet hesabı JSON dosyasını kullanın Jeton (JWT). Daha fazla bilgi için bkz. Hizmet Hesabı Kullanarak Kimlik Doğrulama.
- Mevcut bir OAuth 2.0 erişim jetonu almak için
https://www.googleapis.com/auth/homegraph
kapsamı kullanılıyor oauth2l: agentUserId
ile JSON isteğini oluşturun. Aşağıda, Senkronizasyon İsteği için örnek bir JSON isteği verilmiştir:- Request Sync JSON dosyasını ve jetonu HTTP POST'unuzda birleştirme
isteği gönderir. Medya etkinliği ölçüm araçlarının
komut satırında isteği
curl
kullanarak yapmak için test:
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, bir gRPC uç noktası sağlar
- Home Graph API'nin protokol arabellekleri hizmeti tanımını öğrenin.
- Desteklenen dillerden biri için istemci saplaması oluşturmak üzere gRPC geliştirici belgelerini izleyin.
- RequestSync yöntemini çağırın.
Node.js
Google API'leri Node.js istemcisi, Home Graph API için bağlamalar sağlar.
- Application Default Credentials'ı (Uygulama Varsayılan Kimlik Bilgileri) kullanarak
google.homegraph
hizmetini başlatın. - RequestSyncDevicesRequest ile
requestSync
yöntemini çağırın. RequestSyncDevicesResponse değerinin boş olduğu birPromise
döndürür.
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
Java için HomeGraph API İstemci Kitaplığı, Home Graph API için bağlamalar sağlar.
- Application Default Credentials'ı (Uygulama Varsayılan Kimlik Bilgileri) kullanarak
HomeGraphApiService
'ı başlatın. RequestSyncDevicesRequest
ilerequestSync
yöntemini çağırın. Boş birReportStateAndNotificationResponse
değeri döndürür.
// 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);
Hata yanıtları
Senkronizasyon İsteği'ni çağırırken aşağıdaki hata yanıtlarından birini alabilirsiniz. Bu yanıtlar, HTTP durum kodları biçimindedir.
400 Bad Request
- Sunucu işleyemedi istek geçersiz söz dizimi nedeniyle istemci tarafından gönderilen istek. Yaygın nedenler bozuk JSON içerme veya "" yerinenull
kullanma değerini girin.403 Forbidden
- Sunucu, sırasında bir hata nedeniyle verilenagentUserId
isteği jeton yenileniyor. OAuth uç noktanızın yanıt verdiğinden emin olun jeton isteklerini yenilemek ve kullanıcının hesap bağlantısını kontrol etmek için durumu.404 Not Found
- İstenen kaynak yapılamadı bulunur, ancak gelecekte kullanıma sunulabilir. Bu, genelde veya kullanıcı hesabı Google'a bağlı değil veya geçersiz biragentUserId
agentUserId
değerinin SYNC yanıtınızı ayarladığınızdan DISCONNECT amaçlarını işleme.429 Too Many Requests
- Maksimum eşzamanlı senkronizasyon sayısı belirtilenagentUserId
için istek aşıldı. Bir arayanasync
flag'i doğru değerine ayarlanır.