Błędy autoryzacji

Podczas procesu autoryzacji Google OAuth może zwrócić błąd. Z tego przewodnika dowiesz się, jak rozwiązywać najczęstsze błędy występujące podczas tego procesu.

Rozwiązywanie problemów

Więcej informacji o Google OAuth znajdziesz w artykule Używanie OAuth 2.0 do korzystania z interfejsów API Google.

Token odświeżania ciągle wygasa

Tokeny odświeżania mogą przestać działać po 7 dniach, jeśli identyfikator klienta nie zostanie zatwierdzony. 7-dniowy okres ważności tokena nie jest związany z zatwierdzeniami komercyjnymi ani zatwierdzeniami w piaskownicy. Aby uzyskać dłuższy okres ważności tokena, konto usługi lub użytkownika musi uzyskać zatwierdzenie identyfikatora klienta OAuth 2.0 i zostać wdrożone w środowisku produkcyjnym. Więcej informacji znajdziesz w artykule o wygasaniu tokena odświeżania.

Odmowa dostępu

Jeśli skonfigurujesz ekran zgody OAuth w Google Cloud i Typ użytkownika to Zewnętrzny, podczas próby połączenia konta z kontem Google, które nie jest wymienione jako użytkownik testowy Twojej aplikacji, pojawi się błąd „Odmowa dostępu”. Dodaj konto Google do sekcji Użytkownicy testowi na ekranie zgody OAuth.

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

Jeśli masz problem z dostępem do PCM, zapoznaj się z artykułem Informacje o błędach Menedżera połączeń z partnerami (PCM).

Ta aplikacja nie została zweryfikowana przez Google

Interfejs SDM API używa ograniczonego zakresu, co oznacza, że wszystkie aplikacje, które używają tego zakresu podczas autoryzacji, będą "niezweryfikowane", dopóki weryfikacja interfejsu OAuth API nie zostanie zakończona. Jeśli używasz aplikacji Device Access do celów osobistych, weryfikacja interfejsu OAuth API nie jest wymagana.

Podczas procesu autoryzacji może się pojawić ekran „Ta aplikacja nie została zweryfikowana przez Google”. Dzieje się tak, jeśli zakres sdm.service nie jest skonfigurowany na ekranie zgody OAuth w Google Cloud. Ten ekran można pominąć, klikając opcję Zaawansowane , a następnie Przejdź do nazwa projektu (niebezpieczne).

Więcej informacji znajdziesz w artykule Ekran niezweryfikowanej aplikacji screen.

Nieprawidłowy klient

Podczas próby uzyskania tokena dostępu lub tokena odświeżania pojawi się błąd „Nieprawidłowy klient”, jeśli podasz nieprawidłowy tajny klucz klienta OAuth 2.0. Upewnij się, że wartość client_secret używana w wywołaniach tokena dostępu i tokena odświeżania jest taka sama jak wartość identyfikatora klienta OAuth 2.0, która znajduje się na stronie Google Cloud danych logowania.

Nieprawidłowe żądanie, brak wymaganego zakresu

Po przyznaniu uprawnień w PCM może wystąpić błąd „Nieprawidłowe żądanie” z komunikatem „Brak wymaganego parametru: scope”. Upewnij się, że wartość scope używana w wywołaniach autoryzacji jest taka sama jak wartość ustawiona dla klienta OAuth 2.0, która znajduje się na stronie Google Cloud danych logowania Google Cloud.

Niezgodność identyfikatora URI przekierowania

Podczas autoryzacji może wystąpić 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óra znajduje się na stronie danych logowania Google Cloud.

Krótkie omówienie

Skorzystaj z tego omówienia, aby szybko wdrożyć kroki autoryzacji a user i połączenia konta Google .

Aby skorzystać z tego omówienia, edytuj każdą zmienną zastępczą w przykładowych kodach, zastępując ją wartościami dla konkretnej integracji, a następnie skopiuj i wklej w razie potrzeby:

1. PCM

Przekieruj użytkownika user do linku PCM w swojej aplikacji, zastępując:

  1. project-id ze swoim Device Access Project ID
  2. oauth2-client-id identyfikatorem klienta OAuth2 z danych logowania Google Cloud
  3. redirect-uri identyfikatorem URI przekierowania określonym dla używanego identyfikatora klienta OAuth2
  4. scope 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ń w PCM dla wybranego zakresu użytkownik powinien zostać przekierowany na określony identyfikator URI przekierowania. user Kod autoryzacji jest zwracany jako parametr code w adresie URL, który powinien mieć ten 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órego możesz używać do wywoływania interfejsu SDM API w imieniu użytkownika.

Wyślij żądanie POST do punktu końcowego OAuth w Google, zastępując:

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

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

Żądanie

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 jest zakończona, dopóki nie wywołasz interfejsu API za pomocą tokena dostępu użytkownika user. To pierwsze wywołanie kończy proces autoryzacji i włącza zdarzenia.

Aby zakończyć autoryzację, musisz użyć jednego z wywołań interfejsu API wymienionych w przypadku określonego zakresu.

sdm.service

urządzenia

Więcej informacji znajdziesz w dokumentacji 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ę, co jest podane w parametrze expires_in zwracanym przez Google OAuth. Jeśli token dostępu wygaśnie, użyj tokena odświeżania, aby uzyskać nowy.

Wyślij żądanie POST do punktu końcowego OAuth w Google, zastępując:

  1. oauth2-client-id i oauth2-client-secret identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
  2. refresh-token kodem otrzymanym podczas pierwszego uzyskiwania tokena dostępu.

Google OAuth zwraca nowy token dostępu.

Żądanie

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