Senkronizasyon İste

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

  1. Google Cloud Console içinde HomeGraph API sayfasına gidin.

    HomeGraph API sayfasına gidin
  2. smart home proje kimliğinizle eşleşen projeyi seçin.
  3. 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:

Not: Bu adımları uygularken doğru GCP projesini kullandığınızdan emin olun. Bu, smart home proje kimliğinizle eşleşen projedir.
  1. 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.

  2. Hizmet hesabı oluştur'u tıklayın.

  3. Service account name (Hizmet hesabı adı) alanına bir ad girin.

  4. Hizmet hesabı kimliği alanına bir kimlik girin.

  5. Hizmet hesabı açıklaması alanına bir açıklama girin.

  6. Oluştur ve devam et'i tıklayın.

  7. 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.

  8. Devam'ı tıklayın.

  9. Bitti'yi tıklayın.

  10. Hizmet hesapları listesinden yeni oluşturduğunuz hizmet hesabını seçin ve İşlemler menüsünden Anahtarları yönet'i seçin.

  11. Anahtar ekle > Yeni anahtar oluştur'u seçin.

  12. Anahtar türü için JSON seçeneğini belirleyin.

  13. Oluştur'u tıklayın. Anahtarınızı içeren bir JSON dosyası bilgisayarınıza indirilir.

Hizmet hesabı anahtarları oluşturmayla ilgili ayrıntılı talimatlar ve bilgiler için Google Cloud Console Yardım sitesindeki Hizmet hesabı anahtarları oluşturma ve silme başlıklı makaleyi inceleyin.

API'yi çağırma

HTTP

Home Graph API, bir HTTP uç noktası sağlar.

  1. 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.
  2. oauth2l kullanarak https://www.googleapis.com/auth/homegraph kapsamıyla bir OAuth 2.0 erişim jetonu alın:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId ile JSON isteğini oluşturun. Senkronizasyon isteği için örnek bir JSON isteği:
  5. {
      "agentUserId": "user-123"
    }
  6. 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 curl kullanarak komut satırında nasıl istek oluşturulacağına dair bir örnek verilmiştir:
  7. 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.

  1. Home Graph API için protokol arabellekleri hizmet tanımını alın.
  2. Desteklenen dillerden biri için istemci taslakları oluşturmak üzere gRPC geliştirici belgelerini inceleyin.
  3. RequestSync yöntemini çağırın.

Node.js

Google API'leri Node.js istemcisi, Home Graph API için bağlamalar sağlar.

  1. Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak google.homegraph hizmetini ilk kullanıma hazırlayın.
  2. RequestSyncDevicesRequest ile requestSync yöntemini çağırın. Boş bir RequestSyncDevicesResponse ile Promise 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.

  1. Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak HomeGraphApiService'ı ilk kullanıma hazırlayın.
  2. RequestSyncDevicesRequest ile requestSync yöntemini çağırın. Boş bir ReportStateAndNotificationResponse 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 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 "" yerine null kullanılması yer alır.
  • 403 Forbidden - Jeton yenilenirken oluşan bir hata nedeniyle sunucu, belirtilen agentUserId iç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 bir agentUserId aldığımız anlamına gelir. agentUserId değ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: Belirtilen agentUserId için maksimum eşzamanlı senkronizasyon isteği sayısı aşıldı. Arayan, async işareti doğru olarak ayarlanmadığı sürece aynı anda yalnızca bir senkronizasyon isteği gönderebilir.