Yetkilendirme Hataları

Google OAuth, yetkilendirme işlemi sırasında hata döndürebilir. Bu süreçte en sık karşılaşılan sorunları 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 başlıklı makaleyi inceleyin.

Yenileme jetonunun süresi sürekli doluyor

Bunun olası bir nedeni istemci kimliği onaylanmamışsa yenileme jetonları 7 gün sonra çalışmayı durdurabilir. 7 günlük jeton süresinin dolması, ticari veya korumalı alan onayları ile ilgili değildir. Bir hizmetin veya kullanıcı hesabının, jeton kullanım sürelerinin uzaması için OAuth 2.0 istemci kimliklerinin onaylanması ve üretime girmesi gerekir. Daha fazla bilgi için Jeton geçerlilik süresini yenileme bölümüne bakın.

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ı

PCM'ye erişirken karşılaşılan hatalarla ilgili yardım için İş Ortağı Bağlantıları Yöneticisi (PCM) Hata Referansı başlıklı makaleyi inceleyin.

Google bu uygulamayı doğrulamadı

SDM API'si kısıtlanmış bir kapsam kullanır. Bu, yetkilendirme sırasında bu kapsamı kullanan tüm uygulamaların, OAuth API Doğrulaması tamamlanmadığı sürece "doğrulanmamış" olacağı anlamına gelir. Device Access kişisel kullanım için kullanıldığında OAuth API Doğrulaması gerekli değildir.

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ılmamışsa gösterilir. Bu ekran, Advanced (Gelişmiş) seçeneği ve ardından Project Name (Proje Adı) sayfasına (güvenli değil) git seçeneği tıklanarak atlanabilir.

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" şeklinde bir "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 bulunan OAuth 2.0 istemcisi için belirlediğiniz değerle aynı olduğundan emin olun.

URI uyuşmazlığını yeniden yönlendir

Yetkilendirme sırasında "Yönlendirme uri'si uyuşmuyor" hatasıyla karşılaşabilirsiniz. Yetkilendirme çağrılarında kullandığınız redirect_uri 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.

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 yer tutucu değişkenini özel entegrasyonunuzun değerleriyle düzenleyin ve gerektiğinde kopyalayıp yapıştırın:

1 PCM

user uygulamanızdaki PCM bağlantısına yönlendirin. Bunun için:

  1. project-id ile Device Access Project kimliğiniz
  2. oauth2-client-id ile Google Cloud Kimlik Bilgilerinizdeki
  3. redirect-uri, kullandığınız OAuth2 istemci kimliği için belirtilen bir Yönlendirme URI'si
  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 Yetki Kodu

Seçtiğiniz kapsam için PCM üzerinden izin verildikten sonra user , belirttiğiniz Yönlendirme URI'sine yönlendirilir. Yetkilendirme Kodu, URL'de şu biçimde olması gereken code parametresi olarak döndürülür:

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 üzere yetkilendirme kodunu kullanın.

Aşağıdakileri değiştirerek Google'ın OAuth uç noktasına bir POST çağrısı yapın:

  1. Google Cloud Kimlik Bilgilerinizdeki OAuth2 istemci kimliği ve istemci gizli anahtarıyla oauth2-client-id ve oauth2-client-secret
  2. Önceki adımda aldığınız kodu kullanarak authorization-code
  3. redirect-uri, kullandığınız OAuth2 istemci kimliği için belirtilen bir Yönlendirme URI'si

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ı

user'ın erişim jetonuyla bir API çağrısı yapana kadar yetkilendirme tamamlanmaz. Bu ilk çağrı, yetkilendirme işlemini tamamlar ve etkinlikleri etkinleştirir.

Yetkilendirmeyi tamamlamak için belirtilen kapsam için listelenen API çağrılarından birini kullanmanız gerekir.

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

Google OAuth tarafından döndürülen expires_in parametresinde belirtildiği gibi, SDM API'nin erişim jetonları yalnızca 1 saat boyunca geçerlidir. Erişim jetonunuzun süresi dolmuşsa yeni bir jeton almak için yenileme jetonunu kullanın.

Google'ın OAuth uç noktasına bir POST çağrısı yapın.

  1. Google Cloud Kimlik Bilgilerinizdeki OAuth2 İstemci Kimliği ve İstemci Sırrı ile oauth2-client-id ve oauth2-client-secret
  2. refresh-token öğesini, erişim jetonunu ilk kez alırken aldığınız kodla değiştirin.

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