Senkronizasyon İste

Senkronizasyon İsteyin, kendileriyle ilişkilendirilmiş agentUserId cihazları olan (orijinal SYNC isteğinde gönderdiğiniz) tüm Google kullanıcıları için karşılamanıza bir SYNC isteği tetikler. Bu sayede, kullanıcıların hesaplarını bağlantısını kaldırmadan ve yeniden bağlamadan cihazlarını güncelleyebilirsiniz. Bu tanımlayıcıya bağlı tüm kullanıcılara SYNC isteği gönderilir.

SYNC isteğini 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ü uygularsanız veya özellik ekleyin ya da yeni bir cihaz özelliği ekleyin.

Başlayın

Senkronizasyon İsteğinde bulunmak için şu adımları uygulayın:

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ı gerçekleştirirken doğru GCP projesini kullandığınızdan emin olun. Bu proje, smart home proje kimliğinizle eşleşiyor.
  1. Google Cloud Console bölümünde Hizmet hesabı anahtarı oluştur sayfasına gidin.

    Hizmet Hesabı Anahtarı Oluştur sayfasına git
  2. Hizmet hesabı listesinden Yeni hizmet hesabı'nı seçin.
  3. Service account name (Hizmet hesabı adı) alanına bir ad girin.
  4. Service account ID (Hizmet hesabı kimliği) alanına bir kimlik girin.
  5. Rol listesinden Hizmet Hesapları > Hizmet Hesabı Jeton Oluşturucu'yu seçin.

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

  7. Create'i (Oluştur) tıklayın. Anahtar indirmelerinizi içeren bir JSON dosyası bilgisayarınıza indirilir.

API'yi çağırma

HTTP

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

  1. İndirilen hizmet hesabı JSON dosyasını kullanarak bir JSON Web Token (JWT) oluşturun. Daha fazla bilgi için Hizmet Hesabı Kullanarak Kimlik Doğrulama bölümüne bakın.
  2. oauth2l kullanarak https://www.googleapis.com/auth/homegraph kapsamıyla bir OAuth 2.0 erişim jetonu edinin:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId ile JSON isteği oluşturun. Aşağıda, Senkronizasyon İsteme için örnek bir JSON isteği verilmiştir:
  5. {
      "agentUserId": "user-123"
    }
    
  6. Sync Sync JSON ve HTTP POST isteğinizdeki jetonu Google Home Graph uç noktasında birleştirin. Aşağıda, test olarak curl öğesini kullanarak komut satırında nasıl istekte bulunulacağı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 arabellek hizmet tanımını alın.
  2. Desteklenen dillerden biri için istemci saplaması oluşturmak üzere gRPC geliştirici belgelerini uygulayın.
  3. RequestSync yöntemini çağırın.

Node.js

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

  1. Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak google.homegraph hizmetini başlatın.
  2. RequestSyncDeviceRequest ile requestSync yöntemini çağırın. Boş RequestSyncDeviceResponse ile bir 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'i başlatın.
  2. RequestSyncDevicesRequest ile requestSync yöntemini çağırın. Boş ReportStateAndNotificationResponse sonucunu 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ğinde bulunurken aşağıdaki hata yanıtlarından birini alabilirsiniz. Bu yanıtlar HTTP durum kodları biçimindedir.

  • 400 Bad Request - Sunucu, geçersiz söz dizimi nedeniyle istemci tarafından gönderilen isteği işleyemedi. Yaygın nedenler arasında, bozuk JSON veya bir dize değeri için "" yerine null kullanılması sayılabilir.
  • 403 Forbidden - Sunucu, jetonu yenilerken bir hata oluştuğundan belirtilen agentUserId için isteği işleyemedi. OAuth uç noktanızın, jeton isteklerini yenilemek ve kullanıcının hesap bağlama durumunu kontrol etmek için doğru şekilde yanıt verdiğinden emin olun.
  • 404 Not Found: İstenen kaynak bulunamadı ancak ileride 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 öğesinin SYNC yanıtınızda sağlanan değerle eşleştiğinden ve DISCONNECT niyetlerini 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ı. async işareti true değerine ayarlanmadığı sürece, arayan yalnızca bir eşzamanlı senkronizasyon isteğinde bulunabilir.