Błędy autoryzacji

Podczas procesu autoryzacji Google OAuth może zwrócić błąd. Z tego przewodnika dowiesz się, jak rozwiązywać najczęstsze problemy, które wystąpiły podczas tego procesu.

Rozwiązywanie problemów

Więcej informacji o Google OAuth znajdziesz w artykule o używaniu OAuth 2.0 do uzyskiwania dostępu do interfejsów API Google.

Token odświeżania wciąż traci ważność

Jeśli identyfikator klienta nie zostanie zatwierdzony, tokeny odświeżania mogą przestać działać po 7 dniach. 7-dniowy okres ważności tokena nie jest związany z zatwierdzaniem wersji komercyjnych ani piaskownicy. Aby wydłużyć okres ważności tokenów, identyfikator klienta OAuth 2.0 musi zostać zatwierdzony i wprowadzony w środowisku produkcyjnym usługi lub konta użytkownika. Więcej informacji znajdziesz w sekcji Wygaśnięcie tokena odświeżania.

Odmowa dostępu

Jeśli masz w Google Cloud skonfigurowany ekran zgody OAuth, a Typ użytkownika to Zewnętrzny, przy próbie połączenia konta z kontem Google, które nie jest wymienione jako użytkownik testowy aplikacji, dodaj to konto do sekcji Użytkownicy testowi na ekranie zgody OAuth.

Błąd Menedżera połączeń z partnerami (PCM)

Pomoc dotyczącą błędów, które mogą wystąpić podczas uzyskiwania dostępu do PCM, znajdziesz w dokumentacji błędów Menedżera połączeń z partnerami (PCM).

Ta aplikacja nie została zweryfikowana przez Google

Interfejs SDM API używa zakresu z ograniczeniami, co oznacza, że wszystkie aplikacje używające tego zakresu podczas autoryzacji będą „niezweryfikowane”, dopóki nie zakończy się weryfikacja interfejsu OAuth API. Jeśli używasz Device Access do użytku osobistego, weryfikacja OAuth API nie jest wymagana.

Podczas procesu autoryzacji możesz zobaczyć ekran „Ta aplikacja nie została zweryfikowana przez Google”, który pojawia się, jeśli zakres sdm.service nie jest skonfigurowany na ekranie zgody OAuth w Google Cloud. Aby pominąć ten ekran, kliknij opcję Advanced (Zaawansowane), a następnie Go to Project Name (unsafe) (Otwórz stronę z nazwą projektu).

Więcej informacji znajdziesz w sekcji Ekran niezweryfikowanej aplikacji.

Nieprawidłowy klient

Próba uzyskania dostępu lub tokena odświeżania spowoduje pojawienie się błędu „Nieprawidłowy klient”, jeśli podasz nieprawidłowy tajny klucz klienta OAuth 2.0. Upewnij się, że wartość client_secret, której używasz w wywołaniach tokena dostępu i odświeżania, jest zgodna z identyfikatorem klienta OAuth 2.0, który znajdziesz na stronie Dane logowania Google Cloud.

Nieprawidłowe żądanie, brak wymaganego zakresu

Po przyznaniu uprawnień w PCM możesz zobaczyć błąd „Nieprawidłowe żądanie” „Brak wymaganego parametru: zakres”. Upewnij się, że wartość scope używana w wywołaniach autoryzacji jest taka sama jak wartość ustawiona dla klienta OAuth 2.0, podana na stronie Dane logowania do Google Cloud.

Niezgodność identyfikatora URI przekierowania

Podczas autoryzacji możesz zobaczyć błąd „Niezgodność identyfikatora URI przekierowania”. Upewnij się, że wartość redirect_uri używana w wywołaniach autoryzacji jest taka sama jak wartość ustawiona dla klienta OAuth 2.0, którą znajdziesz na stronie Dane logowania do Google Cloud.

Krótki opis

Skorzystaj z tego dokumentu, aby szybko wdrożyć czynności potrzebne do autoryzacjiuser i połączenia konta Google.

Aby skorzystać z tego krótkiego przewodnika, edytuj każdą zmienną zastępczą w przykładowym kodzie, podając wartości odpowiednie dla Twojej integracji, a potem skopiuj i wklej je w razie potrzeby:

1 PCM

Przekieruj user do linku PCM w aplikacji, zastępując:

  1. project-id za pomocą Device Access Project dokumentu tożsamości
  2. oauth2-client-id z identyfikatorem klienta OAuth2 z danych logowania Google Cloud
  3. redirect-uri z identyfikatorem URI przekierowania określonym dla używanego identyfikatora klienta OAuth2
  4. scope na jednym z dostępnych zakresów
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 Kod autoryzacji

Po przyznaniu uprawnień dla wybranego zakresu za pomocą PCM, adres user powinien zostać przekierowany do podanego identyfikatora URI przekierowania. Kod autoryzacji jest zwracany w adresie URL jako parametr code. Powinien mieć on taki format:

redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope

3 token dostępu

Użyj kodu autoryzacji, aby pobrać token dostępu, który pozwoli Ci wywoływać interfejs SDM API w imieniu użytkownika.

Wykonaj wywołanie POST do punktu końcowego protokołu OAuth Google, zastępując:

  1. oauth2-client-id i oauth2-client-secret z identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
  2. authorization-code za pomocą kodu otrzymanego w poprzednim kroku
  3. redirect-uri z identyfikatorem URI przekierowania określonym dla używanego identyfikatora klienta OAuth2

Google OAuth zwraca 2 tokeny – token dostępu i token odświeżania.

Prośba

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'

Odpowiedź

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}

4 Wywołanie interfejsu API

Autoryzacja nie zostanie ukończona, dopóki nie wywołasz interfejsu API przy użyciu tokena dostępu user. To wstępne wywołanie kończy proces autoryzacji i włącza zdarzenia.

Aby ukończyć autoryzację, musisz użyć jednego z podanych wywołań interfejsu API dla określonego zakresu.

sdm.service

urządzenia

Więcej informacji znajdziesz w dokumentacji interfejsu API devices.list.

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

5 Token odświeżania

Tokeny dostępu do interfejsu SDM API są ważne tylko przez 1 godzinę, zgodnie z parametrem expires_in zwracanym przez Google OAuth. Jeśli token dostępu wygaśnie, użyj tokena odświeżania, aby uzyskać nowy.

Wykonaj wywołanie POST do punktu końcowego protokołu OAuth Google, zastępując:

  1. oauth2-client-id i oauth2-client-secret z identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
  2. refresh-token za pomocą kodu otrzymanego przy początkowym pobieraniu tokena dostępu.

Google OAuth zwraca nowy token dostępu.

Prośba

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'

Odpowiedź

{
  "access_token": "new-access-token",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}