Senkronizasyon İste

Senkronizasyon İsteği, kendileriyle ilişkilendirilmiş belirli agentUserId cihazlarına sahip tüm Google kullanıcıları için (orijinal Senkronizasyon isteğinde gönderdiğiniz) bir SYNC isteğini tetikler. Bu sayede, hesaplarının bağlantısını kaldırıp 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ı mevcut bir cihazı kaldırırsa.
  • Kullanıcı mevcut bir cihazı yeniden adlandırdığında.
  • Yeni bir cihaz türü veya özellik uygularsanız ya da yeni bir cihaz özelliği eklerseniz.

Başlayın

İstek Senkronizasyonunu uygulamak için aşağıdaki adımları izleyin:

Google Home Graph API'yi etkinleştirin

  1. Google Cloud Console sayfasında HomeGraph API sayfasına gidin.

    Home Graph 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 uygulamasından 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şturun 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 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ında bir OAuth 2.0 erişim jetonu alın:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. JSON isteğini agentUserId ile oluşturun. Senkronizasyon İsteği için örnek bir JSON isteği aşağıda verilmiştir:
  5. {
      "agentUserId": "user-123"
    }
    
  6. Request Sync JSON dosyasını ve HTTP POST isteğinizdeki jetonu Google Home Graph uç noktasıyla birleştirin. Aşağıda, test olarak curl 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 hizmeti tanımını öğrenin.
  2. Desteklenen dillerden biri için istemci saplaması oluşturmak üzere gRPC geliştirici dokümanlarındaki talimatları 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. RequestSyncDevicesRequest ile requestSync yöntemini çağırın. Boş bir RequestSyncDevicesResponse içeren 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

HomeGraph API Client Library for Java, Home Graph API için bağlantılar sağlar.

  1. Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak HomeGraphApiService hizmetini 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ı

İstek Senkronizasyonunu ç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. Yaygın nedenler arasında bozuk JSON veya bir dize değeri için "" yerine null kullanımı yer alır.
  • 403 Forbidden - Sunucu, jeton yenilenirken bir hata nedeniyle belirtilen agentUserId isteğini işleyemedi. Jeton isteklerini yenilemek ve kullanıcının hesap bağlama durumunu kontrol etmek için OAuth uç noktanızın doğru şekilde yanıt verdiğinden emin olun.
  • 404 Not Found: İstenen kaynak bulunamadı ancak ileride kullanıma sunulabilir. Genellikle bu, kullanıcı hesabının Google'a bağlı olmadığı veya geçersiz bir agentUserId aldığımız anlamına gelir. agentUserId değerinin SENKRONİZASYON yanıtınızda sağlanan değerle eşleştiğinden ve BAĞLANTIYI KALDIR amaçlarını düzgün bir ş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 doğru olarak ayarlanmadığı sürece arayanlar yalnızca bir tane eşzamanlı senkronizasyon isteği gönderebilir.