Yetkilendirme Hataları

Yetkilendirme işlemi sırasında Google OAuth bir hata döndürebilir. Bu süreçte en sık karşılaşılan hataları gidermek için bu kılavuzdan yararlanabilirsiniz.

Sorun giderme

Google OAuth hakkında daha fazla bilgi edinmek için Google API'lerine Erişmek İçin OAuth 2.0'ı Kullanma başlıklı makaleyi inceleyin.

Yenileme jetonunun süresi sürekli olarak doluyor

İstemci kimliği onaylanmazsa yenileme jetonları 7 gün sonra çalışmayı durdurabilir. 7 günlük jeton geçerlilik süresi, ticari veya korumalı alan onaylarıyla ilgili değildir. Daha uzun jeton ömrü elde etmek için bir hizmet veya kullanıcı hesabının OAuth 2.0 istemci kimliğinin onaylanması ve üretime alınması gerekir. Daha fazla bilgi için Yenileme jetonu geçerlilik süresi başlıklı makaleyi inceleyin.

Erişim reddedildi

Google Cloud'da OAuth kullanıcı rızası ekranınızı ayarladıysanız ve Kullanıcı türü Harici ise uygulamanız için test kullanıcısı olarak listelenmeyen bir Google Hesabı ile hesap bağlamaya çalıştığınızda "Erişim reddedildi" hatası alırsınız. Google Hesabı'nı OAuth kullanıcı rızası 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 nedenle, yetkilendirme sırasında bu kapsamı kullanan tüm uygulamalar, OAuth API Doğrulaması tamamlanmadığı sürece "doğrulanmamış" olarak işaretlenir. Device Access kişisel kullanım için kullanıldığında OAuth API doğrulaması gerekmez.

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

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 "Invalid client" (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, kullanılan OAuth 2.0 istemci kimliğine ait değer olduğundan emin olun.

Geçersiz istek, gerekli kapsam eksik

PCM'de izinleri verdikten sonra"Invalid request " (Geçersiz istek) hatasıyla karşılaşabilirsiniz. Bu hata, "Missing required parameter: scope" (Gerekli parametre eksik: kapsam) mesajını içerir. 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.

Yönlendirme URI'si uyuşmazlığı

Yetkilendirme sırasında "Yönlendirme URI'si eşleşmiyor" 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ı başvuru

user yetkilendirme ve Google Hesabı bağlama adımlarını hızlı bir şekilde uygulamak için bu referansı kullanın.

Bu hızlı referansı kullanmak için kod örneklerindeki her yer tutucu değişkeni, entegrasyonunuza özel değerlerle düzenleyin ve gerektiği şekilde kopyalayıp yapıştırın:

1 PCM

user , uygulamanızdaki PCM bağlantısına yönlendirin. Aşağıdakileri değiştirin:

  1. project-id ile Device Access Project kimliğiniz
  2. oauth2-client-id ile Google Cloud Credentials'daki OAuth2 istemci kimliği
  3. redirect-uri kullandığınız OAuth2 istemci kimliği için belirtilen bir yönlendirme URI'siyle
  4. scope, kullanılabilir kapsamlarınızdan biriyle
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 izin verdikten sonra user , belirttiğiniz yönlendirme URI'sine yönlendirilmelidir. Yetkilendirme kodu, URL'de code parametresi olarak döndürülür. Bu parametre şu biçimde olmalıdı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.

Google'ın OAuth uç noktasına bir POST çağrısı yapın ve aşağıdaki değerleri değiştirin:

  1. oauth2-client-id ve oauth2-client-secret Google Cloud Credentials'daki OAuth2 istemci kimliği ve istemci gizli anahtarıyla
  2. authorization-code ile önceki adımda aldığınız kodu girin.
  3. redirect-uri kullandığınız OAuth2 istemci kimliği için belirtilen bir yönlendirme URI'siyle

Google OAuth, erişim jetonu ve 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ı yapmadığınız sürece yetkilendirme tamamlanmaz. Bu ilk çağrı, yetkilendirme sürecini tamamlar ve etkinlikleri etkinleştirir.

Yetkilendirmeyi tamamlamak için belirtilen kapsamda 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'si için erişim jetonları yalnızca 1 saat geçerlidir. Erişim jetonunuzun süresi dolarsa yeni bir jeton almak için yenileme jetonunu kullanın.

Google'ın OAuth uç noktasına bir POST çağrısı yapın ve aşağıdaki değerleri değiştirin:

  1. oauth2-client-id ve oauth2-client-secret Google Cloud Credentials'daki OAuth2 istemci kimliği ve istemci gizli anahtarıyla
  2. refresh-token ile erişim jetonunu ilk aldığınızda size gönderilen kodu girin.

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