Senkronizasyon isteği, belirtilen agentUserId ile ilişkili cihazları olan (orijinal SYNC isteğinde gönderdiğiniz) herhangi bir Google kullanıcısı için karşılamanıza yönelik bir SYNC isteği tetikler. Bu sayede, kullanıcıların hesaplarının bağlantısını kaldırıp yeniden bağlamadan cihazlarını güncelleyebilirsiniz. Bu tanımlayıcıya bağlı tüm kullanıcılar SYNC isteği alır.
Bir SYNC isteği tetiklemeniz gerekir:
- Kullanıcı yeni bir cihaz eklerse
- Kullanıcı mevcut bir cihazı kaldırırsa
- Kullanıcı mevcut bir cihazı yeniden adlandırırsa
- Yeni bir cihaz türü veya özellik uygularsanız ya da yeni bir cihaz özelliği eklerseniz.
Başlayın
Request Sync'i uygulamak için aşağıdaki adımları izleyin:
Google HomeGraph API'yi etkinleştirme
-
Google Cloud Console içinde 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 üzerinden hizmet hesabı anahtarı oluşturmak için aşağıdaki talimatları uygulayın:
-
Google Cloud Console'nda Hizmet hesapları sayfasına gidin.
Hizmet Hesapları sayfasına gidin.Hizmet Hesapları sayfasına yönlendirilmeden önce bir proje seçmeniz gerekebilir.
Hizmet hesabı oluştur'u tıklayın.
Service account name (Hizmet hesabı adı) alanına bir ad girin.
Hizmet hesabı kimliği alanına bir kimlik girin.
Hizmet hesabı açıklaması alanına bir açıklama girin.
Oluştur ve devam et'i tıklayın.
Role (Rol) açılır menüsünden Service Accounts (Hizmet Hesapları) > Service Account OpenID Connect Identity Token Creator'ı (Hizmet Hesabı OpenID Connect Kimlik Jetonu Oluşturucu) seçin.
Devam'ı tıklayın.
Bitti'yi tıklayın.
Hizmet hesapları listesinden yeni oluşturduğunuz hizmet hesabını seçin ve İşlemler menüsünden Anahtarları yönet'i seçin.
Anahtar ekle > Yeni anahtar oluştur'u seçin.
Anahtar türü için 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 Token (JWT) oluşturmak için indirilen hizmet hesabı JSON dosyasını kullanın. Daha fazla bilgi için Hizmet Hesabı Kullanarak Kimlik Doğrulama başlıklı makaleyi inceleyin.
- oauth2l kullanarak
https://www.googleapis.com/auth/homegraphkapsamıyla bir OAuth 2.0 erişim jetonu alın: agentUserIdile JSON isteğini oluşturun. Senkronizasyon isteği için örnek bir JSON isteği:- Google Home Graph uç noktasına gönderdiğiniz HTTP POST isteğinizde Request Sync JSON'u ve jetonu birleştirin. Aşağıda, test amacıyla
curlkullanarak komut satırında nasıl istek oluşturulacağına dair bir örnek verilmiştir:
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 için protokol arabellekleri hizmet tanımını alın.
- Desteklenen dillerden biri için istemci taslakları oluşturmak üzere gRPC geliştirici belgelerini inceleyin.
- RequestSync yöntemini çağırın.
Node.js
Google API'leri Node.js istemcisi, Home Graph API için bağlamalar sağlar.
- Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak
google.homegraphhizmetini ilk kullanıma hazırlayın. - RequestSyncDevicesRequest ile
requestSyncyöntemini çağırın. Boş bir RequestSyncDevicesResponse ilePromisedö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.
- Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak
HomeGraphApiService'ı ilk kullanıma hazırlayın. RequestSyncDevicesRequestilerequestSyncyöntemini çağırın. Boş birReportStateAndNotificationResponsedö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 isteğinde bulunurken aşağıdaki hata yanıtlarından birini alabilirsiniz. Bu yanıtlar HTTP durum kodları biçiminde gelir.
400 Bad Request: Sunucu, geçersiz söz dizimi nedeniyle istemci tarafından gönderilen isteği işleyemedi. Yaygın nedenler arasında hatalı biçimlendirilmiş JSON veya dize değeri için "" yerinenullkullanılması yer alır.403 Forbidden- Jeton yenilenirken oluşan bir hata nedeniyle sunucu, belirtilenagentUserIdiçin isteği işleyemedi. OAuth uç noktanızın yenileme jetonu isteklerine doğru yanıt verdiğinden emin olun ve kullanıcının hesap bağlama durumunu kontrol edin.404 Not Found- İstenen kaynak bulunamadı ancak gelecekte kullanılabilir. Bu genellikle kullanıcı hesabının Google'a bağlı olmadığı veya geçersiz biragentUserIdaldığımız anlamına gelir.agentUserIddeğerinin SYNC yanıtınızda sağlanan değerle eşleştiğinden ve DISCONNECT amaçlarını doğru şekilde işlediğinizden emin olun.429 Too Many Requests: BelirtilenagentUserIdiçin maksimum eşzamanlı senkronizasyon isteği sayısı aşıldı. Arayan,asyncişareti doğru olarak ayarlanmadığı sürece aynı anda yalnızca bir senkronizasyon isteği gönderebilir.