Bir Hesabı Yetkilendir

Google Cloud ve Device Access projelerinizi oluşturduktan sonra, SDM API için desteklenen bir Google Nest cihazı olan bir Google Hesabı'nı yetkilendirebilirsiniz.

Yapıları ve cihazları görüntülemek için PCM'yi kullanarakDevice Access projenize bir Google Hesabı bağlamanız gerekir. PCM, tek bir kodla user developeradlı çocuğa, yapılarına ve cihaz verilerine erişebilir.

Bu kılavuzda, user ve developerolarak hizmet veriyorsunuz.

  1. Aşağıdaki bağlantıyı web'de aç tarayıcı, değiştirme:

    1. Project Kimliğinizle project-id Device Access
    2. OAuth2 İstemci Kimliği ile oauth2-client-id Google Cloud Kimlik bilgileri
    https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/sdm.service
    
  2. Yakın zamanda Google'da birden fazla hesapla oturum açtıysanız Google Hesaplarınızın listesini içeren ilk Hesap seçin ekranı gösterilebilir. Bu durumda, yetkilendirmek istediğiniz cihazlara bağlı Google Hesabı'nı seçin Device Access.
  3. Google Nest izinleri ekranı, PCM'nin kendisidir. Buradan yapı ve cihaz izinlerini verebilirsiniz. Evinizin (1. Adım) ve bu evde SDM API tarafından desteklenen cihazların (2. Adım) izinlerini etkinleştirin, ardından Sonraki'yi tıklayın.
  4. Proje Adı'na devam etmek için bir hesap seçin ekranında, Proje Adı, Google Cloud projenizin adıdır. ve söz konusu uygulama için yetkilendirmek istediğiniz SDM API'si. Daha önce kullandığınız Google Hesabı'nı kullanın.
  5. Hesap seçtikten sonra Google bu uygulamayı doğrulamadı yazan bir uyarı ekranı görebilirsiniz. Bu durumda, devam etmek için Gelişmiş'i ve ardından Proje Adı'na git (güvenli değil)'i tıklayın. Görüntüleyin Daha fazlası için Google bu uygulamayı doğrulamadı ekleyebilirsiniz.
  6. Grant Proje Adı izni ekranında İzin ver'i tıklayarak proje iznine sahip olmanız gerekir.
  7. Seçimlerinizi onaylayın ekranında, vermek istediğiniz izinlerin işaretlendiğinden emin olun ve onaylamak için İzin ver'i tıklayın.
  8. Şuraya yönlendirilirsiniz: https://www.google.com. Yetkilendirme Kodu, URL'de code parametresi olarak döndürülür. Hesaplarınız şu biçimde olmalıdır:

    https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
    
  9. Yetkilendirme kodunu kopyalayın.

Erişim jetonu alma

Kapsamlı bir erişim jetonu almak için SDM API'yi çağırmak için kullanabilirsiniz.

  1. Bir terminal açıp aşağıdaki curl komutunu çalıştırın.

    1. Google Cloud Kimlik Bilgilerinizdeki OAuth2 istemci kimliği ve istemci gizli anahtarıyla oauth2-client-id ve oauth2-client-secret
    2. Önceki adımda aldığınız kodu kullanarak authorization-code
    curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=https://www.google.com'
    
  2. Google OAuth, bir erişim jetonu ve bir yenileme jetonuna dokunun.

    {
      "access_token": "access-token",
      "expires_in": 3599,
      "refresh_token": "refresh-token",
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }
    Bu değerlerin ikisini de kopyalayın. Erişim jetonu, SDM API ve yenileme jetonu, yeni bir erişim jetonundan yararlanabilirsiniz.

Cihaz listesi araması yap

Siz ödeme yapana kadar yetkilendirme ilk devices.list çağrısına yeni erişim jetonunuzu ekleyin. Bu ilk arama, yetkilendirme sürecini tamamlar ve daha önce bir Pub/Sub aboneliği oluşturduysanız etkinlikleri etkinleştirir.

devices uç noktası için bu çağrıyı yapmak üzere curl işlevini kullanın:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Başarılı bir çağrı, projenize bağlı cihazların listesini döndürür. Device Access Her cihazın, kullanılabilen özelliklerle ilgili kendine özgü bir listesi vardır:

{
  "devices": [
    {
      "name": "enterprises/project-id/devices/device-id",
      "type": "sdm.devices.types.device-type",
      "traits": { ... },
      "parentRelations": [
        {
          "parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
          "displayName": "device-room-name"
        }
      ]
    }
  ]
}

Yenileme jetonu kullanma

SDM API'nin erişim jetonları yalnızca Google OAuth tarafından döndürülen expires_in parametresinde belirtildiği gibi, 1 saat boyunca geçerlidir. Eğer erişim jetonunuzun süresi dolduysa yeni bir jeton almak için yenileme jetonunu kullanın.

Komut, erişim jetonu komutuna benzer. Tek fark, farklı bir grant_type kullanmanızdır.

  1. Bir terminal açın ve curl komutundan sonra şu komutu değiştirerek:

    1. oauth2-client-id oauth2-client-secret OAuth2 İstemci Kimliği ve İstemci Sırrı ile Google Cloud Kimlik bilgileri
    2. İlk kez erişim elde ederken aldığınız kodla refresh-token jeton.
    curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'
    
  2. Google OAuth yeni bir erişim jetonu döndürür.

    {
      "access_token": "new-access-token",
      "expires_in": 3599,
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }

Sorun giderme

Google OAuth hakkında daha fazla bilgi edinmek için Google'a Erişmek için OAuth 2.0'ı Kullanma API'ler.

Yenileme jetonunun süresi sürekli doluyor

İstemci kimliği onaylanmamışsa yenileme jetonları 7 gün sonra çalışmayı durdurabilir. 7 günlük jetonun geçerlilik süresinin Ticaret ile ilişkili değildir onaylarını içerir. Bir hizmetin veya kullanıcı hesabının OAuth'u alması gerekiyor Jeton kullanım ömrünü uzatmak için 2.0 istemci kimliği onaylandı ve üretime sunuldu. Daha fazla bilgi için Yenileme jetonu geçerlilik süresi başlıklı makaleyi inceleyin.

Erişim reddedildi

OAuth izin ekranınızı Google Cloud'da oluşturduysanız ve Kullanıcı türü Harici ise uygulamanız için test kullanıcısı olarak listelenmeyen bir Google Hesabı ile hesap bağlamayı denerseniz "Erişim reddedildi" hatası alırsınız. Google Hesabı'nı OAuth izin ekranınızdaki Test kullanıcıları bölümüne eklediğinizden emin olun.

İş Ortağı Bağlantıları Yöneticisi (PCM) hatası

Erişim sırasında karşılaşılan hatalarla ilgili yardım için PCM, bkz. İş Ortağı Bağlantıları Yöneticisi (PCM) Hata Referansı.

Google bu uygulamayı doğrulamadı

SDM API kısıtlı bir kapsam kullanır, yani Yetkilendirme sırasında bu kapsamı kullanan uygulamalar "doğrulanmamış" olacaktır. tabii ki OAuth API Doğrulaması tamamlandı. Şunlar için Device Access kullanırken: OAuth API Doğrulaması gerekli değildir.

"Google bu uygulamayı doğrulamadı" mesajını görebilirsiniz yetkilendirme sırasında işlemi (sdm.service kapsamı Google Cloud'daki OAuth izin ekranınız. Bu ekranı atlamak için Gelişmiş seçeneğini ve ardından Proje Adı'na git (güvenli değil)'i tıklayın.

Daha fazla bilgi için Doğrulanmamış uygulama ekranı başlıklı makaleyi inceleyin.

Geçersiz istemci

Erişim veya yenileme jetonu almaya çalışırken yanlış bir OAuth 2.0 istemci gizli anahtarı sağlarsanız "Geçersiz istemci" hatası alırsınız. Erişim ve yenileme jetonu çağrılarında kullandığınız client_secret değerinin, Google Cloud Kimlik Bilgileri sayfanızda bulunan OAuth 2.0 istemci kimliği için kullanılan değer olduğundan emin olun.

Geçersiz istek, gerekli kapsam eksik

PCM'de izin verdikten sonra "Gerekli parametre eksik: scope" hatasıyla karşılaşabilirsiniz. Yetkilendirme çağrılarında kullandığınız scope değerinin, Google Cloud Kimlik Bilgileri sayfanızda bulunan OAuth 2.0 istemcisi için ayarladığınız değerle aynı olduğundan emin olun.

URI uyuşmazlığını yeniden yönlendir

Yetkilendirmeyi uygularken "Yönlendirme URI'si uyuşmazlığı" ile karşılaşabilirsiniz. hatası. Yetkilendirme aramalarında kullandığınız redirect_uri değerinin şu olduğundan emin olun: (OAuth 2.0 İstemcisi için belirlediğiniz yapılandırma) Google Cloud Kimlik bilgileri sayfasını ziyaret edin.

Hesap izinlerini değiştirme

Bir Device Access projeye verilen izinleri değiştirmek veya projenin bağlantısını tamamen kaldırmak için PCM'ye gidin:

https://nestservices.google.com/partnerconnections

Bu sayfada, hesabınıza bağlı tüm üçüncü taraf geliştirici hizmetleri (Device Access projeler) gösterilir. İstediğiniz projeyi Device Access seçin unutmayın. İzinleri istediğiniz şekilde değiştirmek için sonraki ekranı kullanın.

Yetkili bir hizmetin yalnızca belirli izinlerini iptal etmek için, iptal etmek istediğiniz izinleri etkinleştirin ve kaydetmek için geri oku tıklayın.

Yetkili bir hizmetin bağlantısını tamamen kaldırmak için Google Hesabınızın bağlantısını kaldırın Hesap'ın, projenin aldığı tüm izinleri ve erişim jetonlarını iptal etmesi hesap için verildi.

PCM istenen hizmeti göstermiyorsa önce bir cihaz listesi araması yapın.

Hızlı referans

Bir kullanıcıyı yetkilendirme ve Google Hesabını bağlama adımlarını hızlıca uygulamak için bu referansı kullanın.

Bu hızlı referansı kullanmak için kod örneklerindeki her bir yer tutucu değişkeni düzenleyin değerleri girin ve gerektiğinde kopyalayıp yapıştırın:

1 PCM

Aşağıdaki bağlantıyı web'de aç tarayıcı, değiştirme:

  1. project-id ile Device Access Project kimliğiniz
  2. oauth2-client-id ile Google Cloud Kimlik Bilgilerinizdeki
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/sdm.service

2 Yetki Kodu

Şuraya yönlendirilirsiniz: https://www.google.com. Yetkilendirme Kodu, URL'de code parametresi olarak döndürülür. Hesaplarınız şu biçimde olmalıdır:

https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service

3 Erişim Jetonu

Kapsamlı bir erişim jetonu almak için SDM API'yi çağırmak için kullanabilirsiniz.

Bir terminal açıp aşağıdaki curl komutunu çalıştırın.

  1. Google Cloud Kimlik Bilgilerinizdeki OAuth2 istemci kimliği ve istemci gizli anahtarıyla oauth2-client-id ve oauth2-client-secret
  2. Önceki adımda aldığınız kodu kullanarak authorization-code

Google OAuth, bir erişim jetonu ve bir yenileme jetonuna dokunun.

İstek

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=https://www.google.com'

Yanıt

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/sdm.service",
  "token_type": "Bearer"
}

4 API Çağrısı

Siz ödeme yapana kadar yetkilendirme ilk devices.list çağrısına yeni erişim jetonunuzu ekleyin. Bu ilk arama, yetkilendirme sürecini tamamlar ve daha önce bir Pub/Sub aboneliği oluşturduysanız etkinlikleri etkinleştirir.

Yetkilendirmeyi tamamlamak için belirtilen kapsam için listelenen API çağrılarından birini kullanmanız gerekir.

sdm.service

cihaz

Bkz. devices.list Daha fazla bilgi için API referansını inceleyin.

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

5 Yenileme Jetonu

SDM API'si için erişim jetonları, Google OAuth tarafından döndürülen expires_in parametresinde belirtildiği gibi yalnızca 1 saat boyunca geçerlidir. Erişim jetonunuzun süresi dolarsa yeni bir jeton almak için yenileme jetonunu kullanın.

Bir terminal açın ve curl komutundan sonra şu komutu değiştirerek:

  1. Google Cloud Kimlik Bilgilerinizdeki OAuth2 istemci kimliği ve istemci gizli anahtarıyla oauth2-client-id ve oauth2-client-secret
  2. İlk kez erişim elde ederken aldığınız kodla refresh-token jeton.

Google OAuth yeni bir erişim jetonu döndürür.

İstek

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'

Yanıt

{
  "access_token": "new-access-token",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/sdm.service",
  "token_type": "Bearer"
}