Yetkilendirme Hataları

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:

  1. Device Access Project Kimliğinizle project-id
  2. Google Cloud Kimlik Bilgilerinizdeki OAuth2 İstemci Kimliği ile oauth2-client-id
  3. Kullandığınız OAuth2 İstemci Kimliği için Yönlendirme URI'si belirtilmiş redirect-uri
  4. 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:

  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
  3. 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:

  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/scope",
  "token_type": "Bearer"
}