Yetkilendirme işlemi sırasında Google OAuth bir hata döndürebilir. Bu işlem sırasında en sık karşılaşılan hataları gidermek için bu kılavuzu kullanın.
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.
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ğıdakileri ekleyerek user öğesini uygulamanızdaki PCM bağlantısına yönlendirin:
- Device Access Project Kimliğinizle project-id
- Google Cloud Kimlik Bilgilerinizdeki OAuth2 İstemci Kimliği ile oauth2-client-id
- Kullandığınız OAuth2 İstemci Kimliği için Yönlendirme URI'si belirtilmiş redirect-uri
- Kullanılabilir kapsamlarınızdan biriyle scope
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=redirect-uri& access_type=offline& prompt=consent& client_id=oauth2-client-id& response_type=code& scope=https://www.googleapis.com/auth/scope
2 Yetkilendirme Kodu
Seçtiğiniz kapsam için PCM üzerinden izinler verildikten sonra user , belirttiğiniz Yönlendirme URI'sine yönlendirilmelidir. Yetkilendirme Kodu, URL'de code
parametresi olarak döndürülür ve URL'nin şu biçimde olması gerekir:
redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope
3 Erişim Jetonu
Kullanıcı adına SDM API'yi çağırmak için kullanabileceğiniz bir erişim jetonu almak için yetkilendirme kodunu kullanın.
Google'ın OAuth uç noktasına bir POST çağrısı yaparak şunları ekleyin:
- Google Cloud Kimlik Bilgilerinizdeki OAuth2 İstemci Kimliği ve İstemci Sırrı ile oauth2-client-id ve oauth2-client-secret
- Önceki adımda aldığınız kodla authorization-code
- Kullandığınız OAuth2 İstemci Kimliği için Yönlendirme URI'si belirtilmiş redirect-uri
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=redirect-uri'
Yanıt
{"access_token": "access-token",
"expires_in": 3599,
"refresh_token": "refresh-token",
"scope": "https://www.googleapis.com/auth/scope",
"token_type": "Bearer" }
4 API Çağrısı
usererişim jetonuyla bir API çağrısı yapana kadar yetkilendirme tamamlanmaz. Bu ilk çağrı, yetkilendirme işlemini tamamlar ve etkinlikler etkinleştirilir.
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.
Google'ın OAuth uç noktasına bir POST çağrısı yaparak şunları ekleyin:
- Google Cloud Kimlik Bilgilerinizdeki OAuth2 İstemci Kimliği ve İstemci Sırrı ile oauth2-client-id ve oauth2-client-secret
- 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/scope",
"token_type": "Bearer" }