Google Cloud ve Device Access projelerinizi oluşturduktan sonra, SDM API için desteklenen bir Google Nest cihazı olan bir Google Hesabı'nı yetkilendirebilirsiniz.
Hesabınızı bağlama
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.
Aşağıdaki bağlantıyı web'de aç tarayıcı, değiştirme:
- Project Kimliğinizle project-id Device Access
- 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 - 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.
- 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.
- 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.
- 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.
- Grant Proje Adı izni ekranında İzin ver'i tıklayarak proje iznine sahip olmanız gerekir.
- 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.
Ş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 - Yetkilendirme kodunu kopyalayın.
Erişim jetonu alma
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.- Google Cloud Kimlik Bilgilerinizdeki OAuth2 istemci kimliği ve istemci gizli anahtarıyla oauth2-client-id ve oauth2-client-secret
- Ö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' Google OAuth, bir erişim jetonu ve bir yenileme jetonuna dokunun.
{
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.
Bir terminal açın ve
curl
komutundan sonra şu komutu değiştirerek:- oauth2-client-id oauth2-client-secret OAuth2 İstemci Kimliği ve İstemci Sırrı ile Google Cloud Kimlik bilgileri
- İ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' Google OAuth yeni bir erişim jetonu döndürür.
{
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:
- project-id ile Device Access Project kimliğiniz
- 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.
- Google Cloud Kimlik Bilgilerinizdeki OAuth2 istemci kimliği ve istemci gizli anahtarıyla oauth2-client-id ve oauth2-client-secret
- Ö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:
- Google Cloud Kimlik Bilgilerinizdeki OAuth2 istemci kimliği ve istemci gizli anahtarıyla oauth2-client-id ve oauth2-client-secret
- İ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" }