Senkronizasyon İste

Senkronizasyon İsteği, belirtilen 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, hesap bağlantısını kaldırmadan ve hesabı yeniden bağlamadan kullanıcıların cihazlarını güncelleyebilirsiniz. Bu tanımlayıcıya bağlı tüm kullanıcılar bir SYNC isteği alır.

Bir SYNC isteğini tetiklemeniz gerekir:

  • Kullanıcı yeni bir cihaz eklerse.
  • Kullanıcının mevcut cihazı kaldırması.
  • Kullanıcı mevcut bir cihazı yeniden adlandırırsa.
  • Yeni bir cihaz türü veya özelliği uygularsanız ya da yeni cihaz özelliği eklerseniz.

Başlayın

Senkronizasyon İsteğini uygulamak için aşağıdaki adımları uygulayın:

Google HomeGraph API'yi etkinleştirme

  1. Google Cloud Console uygulaması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 öğesinden bir hizmet hesabı anahtarı oluşturmak için şu 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 sayfasında Hizmet hesabı anahtarı oluştur sayfasına gidin.

    Hizmet Hesabı Anahtarı Oluşturma sayfasına git
  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. Role (Rol) listesinden Hizmet Hesapları > Hizmet Hesabı Jetonu Oluşturucu'yu seçin.

  6. Anahtar türü olarak 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. İndirilen hizmet hesabı JSON dosyasını kullanarak JSON Web Token (JWT) oluşturun. Daha fazla bilgi için bkz. Hizmet Hesabı Kullanarak Kimlik Doğrulama.
  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. Aşağıda, Senkronizasyon İsteği için örnek bir JSON isteği verilmiştir:
  5. {
      "agentUserId": "user-123"
    }
    
  6. Request Sync JSON öğesini ve HTTP POST isteğinizdeki jetonu Google Home Graph uç noktasına birleştirin. Test amacıyla curl kullanarak komut satırında nasıl istek yapacağınıza dair bir örneği aşağıda bulabilirsiniz:
  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'nin protokol arabellekleri hizmeti tanımını öğrenin.
  2. Desteklenen dillerden biri için istemci saplaması oluşturmak üzere gRPC geliştirici belgelerini izleyin.
  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. Application Default Credentials'ı (Uygulama Varsayılan Kimlik Bilgileri) 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ığı, Home Graph API için bağlamalar sağlar.

  1. Application Default Credentials'ı (Uygulama Varsayılan Kimlik Bilgileri) kullanarak HomeGraphApiService'ı başlatın.
  2. RequestSyncDevicesRequest ile requestSync yöntemini çağırın. Boş bir ReportStateAndNotificationResponse değeri 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çimindedir.

  • 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 yenilerken oluşan bir hata nedeniyle, 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 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ı. Bir arayan, async işareti doğru değerine ayarlanmadığı sürece yalnızca bir eşzamanlı senkronizasyon isteği gönderebilir.