Bir Hesabı Yetkilendir

Google Cloud ve Cihaz Erişimi projeleriniz oluşturulduktan sonra SDM API için, desteklenen bir Google Nest cihazıyla 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, yapılarına ve cihaz verilerine user erişme izni developervermesini sağlar.

Bu kılavuzda hem user hem de developerolarak hizmet vereceksiniz.

  1. Aşağıdaki bağlantıyı bir web tarayıcısında açın ve şunları değiştirin:

    1. Device Access Project Kimliğinizle project-id
    2. Google Cloud Kimlik Bilgilerinizdeki OAuth2 İstemci Kimliği ile oauth2-client-id
    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. Son zamanlarda Google'da birden fazla hesapla oturum açtıysanız Google hesaplarınızın listesini içeren bir Hesap seçin başlangıç ekranı gösterilebilir. Bu durumda, Device Accessiçin yetkilendirmek istediğiniz cihazlara bağlı Google Hesabı'nı seçin.
  3. Google Nest izinleri ekranı PCM'dir. Buradan yapı ve cihaz izinleri verebilirsiniz. Evinizin izinlerini (1. adım) ve bu evde bulunan ve SDM API tarafından desteklenen diğer cihazları açık duruma getirin (2. adım) ve İleri'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). SDM API için yetkilendirmek istediğiniz Google hesabını seçin. Önceden kullandığınız Google Hesabı'nı kullanın.
  5. Bir hesap seçtikten sonra, Google bu uygulamayı doğrulamadı ifadesini içeren bir uyarı ekranı görebilirsiniz. Doğrulamak için Gelişmiş seçeneğini ve ardından Proje Adı'na git (güvenli değil) seçeneğini tıklayın. Daha fazla bilgi için Google bu uygulamayı doğrulamadı bölümüne bakın.
  6. Proje Adı'na izin verin ekranında, projeye, Google hesabınıza erişim izni vermek için İzin ver'i tıklayın.
  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. https://www.google.com adresine yönlendirilirsiniz. Yetkilendirme Kodu, URL'de code parametresi olarak döndürülür ve ş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

SDM API'yi çağırmak için kullanabileceğiniz bir erişim jetonu almak için yetkilendirme kodunu kullanın.

  1. Bir terminal penceresi açın ve aşağıdaki curl komutunu çalıştırarak aşağıdaki komutu çalıştırın:

    1. Google Cloud Kimlik Bilgilerinizdeki OAuth2 İstemci Kimliği ve İstemci Sırrı ile oauth2-client-id ve oauth2-client-secret
    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 jetonu olmak üzere iki jeton döndürür.

    {
      "access_token": "access-token",
      "expires_in": 3599,
      "refresh_token": "refresh-token",
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }
    Bu değerleri de kopyalayın. Erişim jetonu SDM API'yi çağırmak, yenileme jetonu ise yeni bir erişim jetonu almak için kullanılır.

Cihaz listesi araması yap

Siz yeni erişim jetonunuzu kullanarak ilk devices.list çağrınızı yapana kadar yetkilendirme tamamlanmaz. Bu ilk çağrı, yetkilendirme işlemini tamamlar ve daha önce Pub/Sub aboneliği oluşturduysanız etkinlikleri etkinleştirir.

devices uç noktası için bu çağrıyı yapmak üzere curl 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 bir listesini Device Accessdöndürür. Her cihazın kendine ait benzersiz ö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 için erişim jetonları, Google OAuth tarafından döndürülen expires_in parametresinde belirtildiği gibi yalnızca 1 saat geçerlidir. Erişim jetonunuzun süresi dolarsa yenileme jetonunu kullanarak yeni bir jeton alın.

Komut, farklı bir grant_type kullanmanız dışında erişim jetonuna benzer.

  1. Bir terminal penceresi açın ve aşağıdaki curl komutunu çalıştırarak aşağıdaki komutu çalıştırın:

    1. Google Cloud Kimlik Bilgilerinizdeki OAuth2 İstemci Kimliği ve İstemci Sırrı ile oauth2-client-id ve oauth2-client-secret
    2. Erişim jetonunu ilk olarak alırken aldığınız kodla refresh-token.
    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 API'lerine Erişmek için OAuth 2.0'ı Kullanma bölümüne bakın.

Yenileme jetonunun süresi sürekli doluyor

Bunun olası nedenlerinden biri istemci kimliği onaylanmazsa yenileme jetonları 7 gün sonra çalışmayı durdurabilir. 7 günlük jetonun geçerlilik süresinin sona ermesi, Ticari veya Korumalı Alan onaylarıyla ilgili değildir. Daha uzun jeton kullanım süreleri elde etmek için bir hizmet veya kullanıcı hesabının OAuth 2.0 istemci kimliğini onaylayıp üretime geçmesi gerekir. Daha fazla bilgi için Yenileme jetonu geçerlilik süresini inceleyin.

Erişim engellendi

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

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

PCM'ye erişirken karşılaşılan hatalarla ilgili yardım için İş Ortağı Bağlantıları Yöneticisi (PCM) Hata Referansı bölümüne bakın.

Google bu uygulamayı doğrulamadı

SDM API, kısıtlanmış bir kapsam kullanır. Yani, yetkilendirme sırasında bu kapsamı kullanan tüm uygulamalar, OAuth API Doğrulaması tamamlanmadığı sürece "doğrulanmaz". Kişisel kullanım için Device Access kullanırken OAuth API Doğrulaması gerekmez.

Yetkilendirme işlemi sırasında "Google bu uygulamayı doğrulamadı" ekranını görebilirsiniz. Bu ekran, Google Cloud'daki OAuth izin ekranınızda sdm.service kapsamı yapılandırılmadıysa görünür. Gelişmiş seçeneği ve ardından Proje Adı'na git (güvenli değil) seçeneği tıklanarak bu ekran atlayabilirsiniz.

Daha fazla bilgi için Doğrulanmamış uygulama ekranı bölümüne bakın.

Geçersiz müşteri

Erişim veya yenileme jetonu almaya çalışırken, yanlış bir OAuth 2.0 İstemci Sırrı 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 gösterildiği şekilde, kullanılan OAuth 2.0 İstemci Kimliği için geçerli olduğundan emin olun.

Geçersiz istek, gerekli kapsam eksik

PCM'de izinleri verdikten sonra "Eksik parametre: kapsam" "Geçersiz istek" hatasıyla karşılaşabilirsiniz. Yetkilendirme çağrılarında kullandığınız scope değerinin, Google Cloud Kimlik Bilgileri sayfanızda olduğu şekilde OAuth 2.0 İstemcisi için belirlediğiniz değerle aynı olduğundan emin olun.

Yönlendirme URI uyuşmazlığı

Yetkilendirmeyi uygularken "Yönlendirme URI uyuşmazlığı" hatasıyla karşılaşabilirsiniz. Yetkilendirme çağrılarında kullandığınız redirect_uri değerinin, Google Cloud Kimlik Bilgileri sayfanızda belirtilenle OAuth 2.0 İstemcisi için belirlediğiniz değerle aynı olduğundan emin olun.

Hesap izinlerini değiştirme

Bir projeye verilen izinleri değiştirmek Device Access veya tamamen bağlantıyı kesmek 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 proje) gösterilir. Değiştirmek istediğiniz Device Access projeyi seçin. İzinleri istediğiniz gibi değiştirmek için sonraki ekranı kullanın.

Yetkili bir hizmet için yalnızca belirli izinleri iptal etmek istiyorsanız iptal etmek istediğiniz izinleri açıp kapatı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ırarak projenin hesap için verdiği tüm izinleri ve erişim jetonlarını iptal edin.

PCM istenen hizmeti göstermiyorsa önce cihaz listesi çağrısı yapmanız gerekebilir.

Hızlı referans

Biruser hesabını yetkilendirme ve Google hesabını bağlama adımlarını hızlıca uygulamak için bu referansı kullanın.

Bu hızlı başvuruyu kullanmak için kod örneklerindeki her bir yer tutucu değişkenini kendi entegrasyonunuza ait değerlerle düzenleyin ve gereken şekilde kopyalayıp yapıştırın:

1 PCM

Aşağıdaki bağlantıyı bir web tarayıcısında açın ve şunları değiştirin:

  1. Device Access Project Kimliğinizle project-id
  2. Google Cloud Kimlik Bilgilerinizdeki OAuth2 İstemci Kimliği ile oauth2-client-id
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 Yetkilendirme Kodu

https://www.google.com adresine yönlendirilirsiniz. Yetkilendirme Kodu, URL'de code parametresi olarak döndürülür ve ş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

SDM API'yi çağırmak için kullanabileceğiniz bir erişim jetonu almak için yetkilendirme kodunu kullanın.

Bir terminal penceresi açın ve aşağıdaki curl komutunu çalıştırarak aşağıdaki komutu çalıştırın:

  1. Google Cloud Kimlik Bilgilerinizdeki OAuth2 İstemci Kimliği ve İstemci Sırrı ile oauth2-client-id ve oauth2-client-secret
  2. Önceki adımda aldığınız kodla authorization-code

Google OAuth, bir erişim jetonu ve bir yenileme jetonu olmak üzere iki jeton 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&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 yeni erişim jetonunuzu kullanarak ilk devices.list çağrınızı yapana kadar yetkilendirme tamamlanmaz. Bu ilk çağrı, yetkilendirme işlemini tamamlar ve daha önce Pub/Sub aboneliği oluşturduysanız etkinlikleri etkinleştirir.

Yetkilendirmeyi tamamlamak üzere belirtilen kapsam için listelenen API çağrılarından birini kullanmalısınız.

sdm.service

cihaz

Daha fazla bilgi için devices.list API referansına bakın.

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 için erişim jetonları, Google OAuth tarafından döndürülen expires_in parametresinde belirtildiği gibi yalnızca 1 saat geçerlidir. Erişim jetonunuzun süresi dolarsa yenileme jetonunu kullanarak yeni bir jeton alın.

Bir terminal penceresi açın ve aşağıdaki curl komutunu çalıştırarak aşağıdaki komutu çalıştırın:

  1. Google Cloud Kimlik Bilgilerinizdeki OAuth2 İstemci Kimliği ve İstemci Sırrı ile oauth2-client-id ve oauth2-client-secret
  2. Erişim jetonunu ilk olarak alırken aldığınız kodla refresh-token.

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