Senkronizasyon İste

Senkronizasyon İsteği, agentUserId ile ilişkilendirilmiş cihazlara sahip (orijinal SYNC isteğinde gönderdiğiniz) tüm Google kullanıcıları için sipariş karşılamaya yönelik bir 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 bir 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ı yeniden adlandırır.
  • Yeni bir cihaz türü, özellik veya cihaz özelliği eklersiniz.

Başlayın

İstek senkronizasyonunu uygulamak için aşağıdaki adımları uygulayın:

Google HomeGraph API'yi etkinleştirme

  1. Google Cloud Console sayfasında 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'ten 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'te Hizmet hesabı anahtarı oluştur sayfasına gidin.

    Hizmet Hesabı Anahtarı Oluştur sayfasına gidin.
  2. Hizmet hesabı listesinden Yeni hizmet hesabı'nı seçin.
  3. Hizmet hesabı adı alanına bir ad girin.
  4. Hizmet hesabı kimliği alanına bir kimlik girin.
  5. Rol listesinde Hizmet Hesapları > Hizmet Hesabı Jetonu Oluşturucusu'nu seçin.

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

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

  1. JSON Web Token (JWT) oluşturmak için indirilen hizmet hesabı JSON dosyasını kullanın. Daha fazla bilgi için bkz. Hizmet Hesabı Kullanarak Kimlik Doğrulama.
  2. oauth2l kullanarak https://www.googleapis.com/auth/homegraph kapsamına sahip 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ğini oluşturun. İstek senkronizasyonu için örnek bir JSON isteği aşağıda verilmiştir:
  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 isteği nasıl yapacağınıza 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 protokol arabellekleri hizmet tanımını alın.
  2. Desteklenen dillerden biri için istemci saplamaları oluşturmak üzere gRPC geliştirici belgelerini uygulayın.
  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 başlatın.
  2. RequestSyncDevicesRequest ile requestSync yöntemini çağırın. RequestSyncDevicesResponse değerinin boş olduğu 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ığı, HomeGraph 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ş 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 İsteği'ni ç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, geçersiz söz dizimi nedeniyle istemci tarafından gönderilen isteği işleyemedi. Bozuk JSON veya dize değeri için "" yerine null kullanımı, bu durumun sık karşılaşılan nedenlerinden bazılarıdır.
  • 403 Forbidden: Sunucu, jetonu yenileme sırasında oluşan bir hata nedeniyle belirli bir agentUserId isteğini işleyemedi. OAuth uç noktanızın, jeton yenileme 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 ileride kullanılabilir olabilir. Bu durum genellikle kullanıcı hesabının Google'a bağlanmadığı veya geçersiz bir agentUserId aldığımız anlamına gelir. agentUserId değerinin SENKRONİZE yanıtınızda sağlanan değerle eşleştiğinden ve DISCONNECT amaçlarını düzgün bir şekilde yönettiğ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 olarak ayarlanmamışsa bir araya çağıran yalnızca bir eşzamanlı senkronizasyon isteği gönderebilir.