Błędy autoryzacji

Podczas procesu autoryzacji Google OAuth może zwrócić błąd. Aby rozwiązać najczęstsze problemy, które mogą wystąpić podczas tego procesu, skorzystaj z tego przewodnika.

Rozwiązywanie problemów

Więcej informacji o protokole OAuth Google znajdziesz w artykule Używanie protokołu OAuth 2.0 na potrzeby dostępu do 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 został zatwierdzony. Tokeny wygasają po 7 dniach niezależnie od tego, czy zostały zatwierdzone do użytku komercyjnego, czy w piaskownicy. Aby uzyskać dłuższy czas ważności tokenów, konto usługi lub użytkownika musi uzyskać zatwierdzony identyfikator klienta OAuth 2.0 i wdrożyć go w wersji produkcyjnej. Więcej informacji znajdziesz w sekcji Wygaśnięcie tokena odświeżania.

Odmowa dostępu

Jeśli masz ekran zgody OAuth skonfigurowany w Google Cloud, a typ użytkownika to Zewnętrzny, podczas próby połączenia konta z kontem Google, które nie jest wymienione jako użytkownik testowy w Twojej aplikacji, pojawi się błąd „Dostęp odmówiony”. Pamiętaj, aby dodać konto Google do sekcji Użytkownicy testowi na ekranie zgody OAuth.

Błąd Menedżera połączeń z usługami partnerskimi

Jeśli wystąpią błędy podczas korzystania z PCM, zapoznaj się z artykułem Informacje o błędach w 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 nie zostanie przeprowadzona weryfikacja interfejsu OAuth API. W przypadku korzystania z Device Access do celów osobistych weryfikacja interfejsu OAuth API nie jest wymagana.

Podczas procesu autoryzacji może się wyświetlić ekran „Google nie zweryfikowało tej aplikacji”. Wyświetla się on, jeśli zakres sdm.service nie jest skonfigurowany na ekranie akceptacji OAuth w Google Cloud. Aby pominąć ten ekran, kliknij opcję Zaawansowane, a następnie Przejdź do Nazwa projektu (niebezpieczne).

Więcej informacji znajdziesz na ekranie niezweryfikowanej aplikacji.

Nieprawidłowy klient

Jeśli podasz nieprawidłowy klucz tajny klienta OAuth 2.0, podczas próby uzyskania tokenu dostępu lub odświeżenia tokenu pojawi się błąd „Nieprawidłowy klient”. Upewnij się, że wartość client_secret używana w wywołaniach dostępu i odświeżania tokena jest wartością identyfikatora klienta OAuth 2.0, który znajduje się na stronie Dane logowania Google Cloud.

Nieprawidłowe żądanie – brak wymaganego zakresu

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

Niezgodność identyfikatora URI przekierowania

Podczas autoryzacji może wystąpić błąd „Niezgodna wartość uri przekierowania”. Upewnij się, że wartość redirect_uri używana w wywołaniach autoryzacji jest taka sama jak ta ustawiona dla klienta OAuth 2.0 na stronie Dane uwierzytelniające Google Cloud.

Krótkie omówienie

Skorzystaj z tego dokumentu, aby szybko wykonać czynności wymagane do autoryzacjiuser i połączenia konta Google.

Aby skorzystać z tego szybkiego przewodnika, w przypadku każdej zmiennej zastępczej w przykładach kodu wpisz wartości odpowiadające konkretnej integracji i w razie potrzeby skopiuj i wklej je:

1 PCM

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

  1. project-id z dokumentem tożsamości Device Access Project
  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 z 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ń przez PCM w wybranym zakresie user użytkownik powinien zostać przekierowany do określonego identyfikatora URI przekierowania. Kod autoryzacji jest zwracany jako parametr code w adresie URL. Powinien mieć 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órego możesz używać do wywoływania interfejsu SDM API w imieniu użytkownika.

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

  1. oauth2-client-idoauth2-client-secret z identyfikatorem klienta OAuth2 i jego tajnym kluczem z danych logowania Google Cloud
  2. authorization-code zastąp kodem otrzymanym 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.

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

Aby dokończyć autoryzację, musisz użyć jednego z wywołań interfejsu API wymienionych w ramach 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ę, co jest zaznaczone 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 Google, zastępując:

  1. oauth2-client-idoauth2-client-secret z identyfikatorem klienta OAuth2 i jego tajnym kluczem z danych logowania Google Cloud
  2. refresh-token z kodem otrzymanym przy pierwszym uzyskaniu 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"
}