Senkronizasyon İste

Cloud-to-cloud

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

  1. Google Cloud Console bölümünde 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'dan 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 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.

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

  3. 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. Rol açılır listesinden Hizmet Hesapları > Hizmet Hesabı OpenID Connect Kimlik Jetonu Oluşturucu'yu 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ü olarak 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. İstek senkronizasyonu için örnek bir JSON isteğini aşağıda bulabilirsiniz:
  5. {
      "agentUserId": "user-123"
    }
  6. Google Home Graph uç noktasına HTTP POST isteğinizde İstek Senkronizasyonu JSON'u ile jetonu birleştirin. Aşağıda, test olarak curl kullanarak komut satırında isteğin nasıl yapılacağı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, gRPC uç noktası sağlar.

  1. Home Graph API için protocol buffers hizmet tanımını alın.
  2. Desteklenen dillerden biri için istemci saplamaları oluşturmak üzere gRPC geliştirici belgelerindeki adımları uygulayın.
  3. RequestSync yöntemini çağırın.

Node.js

Google APIs Node.js Client, Home Graph API için bağlamalar sağlar.

  1. Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak google.homegraph hizmetini başlatın.
  2. requestSync yöntemini RequestSyncDevicesRequest ile ç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'nin bağlamalarını sağlar.

  1. HomeGraphApiService öğesini Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak başlatın.
  2. requestSync yöntemini RequestSyncDevicesRequest ile ç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);
    
DISCONNECT amacı aldığınızda Request Sync çağrısını durdurmanız gerekir.

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 "" yerine null kullanılması yer alır.
  • 403 Forbidden - Sunucu, jeton yenilenirken oluşan bir hata nedeniyle agentUserId iç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 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ı düzgün ş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.