Bir Hesabı Yetkilendir

Google Cloud ve Cihaz Erişimi projeleriniz oluşturulduğunda desteklenen bir Google Nest cihazıyla bir Google Hesabı'nı şunun için yetkilendirebilir: SDM API'si.

Yapıları ve cihazları görüntülemek için hesabınıza bir Google Hesabı bağlamanız gerekir: Device Access projeyi düzenleyebilirsiniz. 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 Hesap seçin ekranı görüntülenir ve Google Hesapları. Öyleyse, kullandığınız cihazlara bağlı Google hesabını seçin. Device Accessiçin yetkilendirmek istiyorsunuz.
  3. Google Nest izinleri ekranı PCM'dir. Buradan yapı ve cihaz izinlerini verebilirsiniz. Açma/kapatma düğmesini açık evinize (1. Adım) ve evinizde bulunan tüm cihazlarınıza ait izinleri tarafından desteklendiğini doğrulayın (2. Adım) ve ardından Next (İleri) seçeneğini 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ı. Böyle bir durumda devam etmek için Advanced (Gelişmiş) seçeneğini belirleyin ve Proje Adına git (güvenli değil) seçeneğini 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, istediğiniz izinlerin doğru olduğundan emin olun onay kutusunu işaretleyin 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 komutu kullanılmaktadır:

    1. oauth2-client-id oauth2-client-secret OAuth2 İstemci Kimliği ve İstemci Sırrı ile Google Cloud Kimlik bilgileri
    2. Önceki adımda aldığınız kodla 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 jetonu.

Cihaz listesi araması yap

Siz ödeme yapana kadar yetkilendirme ilk devices.list çağrısına yeni erişim jetonunuzu ekleyin. Bu İlk çağrı, yetkilendirme işlemini tamamlar ve Pub/Sub aboneliği oluşturdunuz.

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 arama, Device Accesscihazınıza bağlı cihazların listesini döndürür. belirler. Her cihazın kendine özgü mevcut özellikler 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 nasıl kullanılır?

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 jetonuna benzer, ancak farklı bir grant_type

  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 doluyor

İstemci kimliği onaylanmazsa yenileme jetonları 7 gün sonra çalışmayı durdurabilir. bir neden olabilir. 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 jetonun geçerlilik süresi konusuna bakın ekleyebilirsiniz.

Erişim reddedildi

Google Cloud'da OAuth izin ekranınızı ayarladıysanız ve Kullanıcı türü Harici ise "Erişim reddedildi" hatasını alırsınız şu hatayı alırsanız: test kullanıcısı olarak listelenmeyen bir Google hesabıyla hesap bağlama girişiminde bulunma en iyi yoludur. Google hesabını Test kullanıcıları bölümüne eklediğinizden emin olun OAuth izin ekranında.

İş 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, Gelişmiş seçeneğini ve ardından Projeye Git'i tıklayarak atlayabilirsiniz. Ad (güvenli değil).

Doğrulanmamış uygulama" bölümüne bakın ekran konulu videomuzu izleyin.

Geçersiz istemci

Erişim veya yenileme jetonu almaya çalışırken "Geçersiz müşteri" hata mesajını alırsınız. Şunlardan emin olun: Erişim ve yenileme jetonu çağrılarında kullandığınız client_secret değeri (kullanılan OAuth 2.0 İstemci Kimliği için) Google Cloud Kimlik bilgileri sayfasını ziyaret edin.

Geçersiz istek, gerekli kapsam eksik

PCM'de izin verdikten sonra "Geçersiz istek" "Gerekli parametre eksik: kapsam" hatası. Şunlardan emin olun: Yetkilendirme çağrılarında kullandığınız scope değeri, OAuth 2.0 İstemcisi için belirlediğiniz değerle aynıdır. Google Cloud Kimlik bilgileri sayfasını ziyaret edin.

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 projeye verilen izinleri değiştirmek için Device Access veya projenin bağlantısını kesmek bunun için PCM'ye gidin:

https://nestservices.google.com/partnerconnections

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

Yetkili bir hizmet için yalnızca belirli izinleri iptal etmek üzere tıklayın ve kaydetmek için geri okunu 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 user ve Google hesabını bağla ,

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 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 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 komutu kullanılmaktadır:

  1. oauth2-client-id oauth2-client-secret OAuth2 İstemci Kimliği ve İstemci Sırrı ile Google Cloud Kimlik bilgileri
  2. Önceki adımda aldığınız kodla 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 İlk çağrı, yetkilendirme işlemini tamamlar ve Pub/Sub aboneliği oluşturmuş olmanız gerekir.

Aşağıdakilerden birini kullanmanız Yetkilendirmeyi tamamlamak üzere, belirtilen kapsam için listelenen API çağrıları.

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

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.

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"
}