Senkronizasyon isteği, agentUserId ile ilişkili cihazları olan (ilk SYNC isteğinde gönderdiğiniz) tüm Google kullanıcıları için SYNC isteğini 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.
SYNC isteği tetiklemeniz gerekir:
- Kullanıcı yeni bir cihaz eklerse
- Kullanıcı mevcut bir cihazı kaldırırsa
- Kullanıcı mevcut bir cihazın adını değiştirirse
- Yeni bir cihaz türü veya özellik uyguladığınızda ya da yeni bir cihaz özelliği eklediğinizde
Başlayın
Senkronizasyon İste özelliğini uygulamak için aşağıdaki adımları uygulayın:
Google HomeGraph API'yi etkinleştirme
-
Google Cloud Console bölümünde 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'dan hizmet hesabı anahtarı oluşturmak için aşağıdaki talimatları uygulayın:
-
Google Cloud Console bölümünde 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.
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.
Rol açılır listesinden Hizmet Hesapları > Hizmet Hesabı OpenID Connect Kimlik Jetonu Oluşturucu'yu 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ü 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 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. İstek senkronizasyonu için örnek bir JSON isteğini aşağıda bulabilirsiniz:- Google Home Graph uç noktasına HTTP POST isteğinizde İstek Senkronizasyonu JSON'u ile jetonu birleştirin. Aşağıda, test olarak
curlkullanarak komut satırında isteğin nasıl yapılacağı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, gRPC uç noktası sağlar.
- Home Graph API için protocol buffers hizmet tanımını alın.
- Desteklenen dillerden biri için istemci saplamaları oluşturmak üzere gRPC geliştirici belgelerindeki adımları uygulayın.
- RequestSync yöntemini çağırın.
Node.js
Google APIs Node.js Client, Home Graph API için bağlamalar sağlar.
- Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak
google.homegraphhizmetini başlatın. requestSyncyöntemini RequestSyncDevicesRequest ile ç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'nin bağlamalarını sağlar.
HomeGraphApiServiceöğesini Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak başlatın.requestSyncyönteminiRequestSyncDevicesRequestile ç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ı
Request Sync'i çağırırken aşağıdaki hata yanıtlarından birini alabilirsiniz. Bu yanıtlar HTTP durum kodları biçiminde gelir.
400 Bad Request: Sunucu, istemci tarafından gönderilen isteği geçersiz söz dizimi nedeniyle işleyemedi. Yaygın nedenler arasında hatalı biçimlendirilmiş JSON veya bir dize değeri için "" yerinenullkullanılması yer alır.403 Forbidden- Sunucu, jeton yenilenirken oluşan bir hata nedeniyleagentUserIdiçin yapılan isteği işleyemedi. OAuth uç noktanızın yenileme jetonu isteklerine doğru şekilde 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 durum 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ı düzgün ş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.