Podczas procesu autoryzacji Google OAuth może zwrócić błąd. Aby rozwiązać najczęstsze problemy występujące podczas tego procesu, skorzystaj z tego przewodnika.
Rozwiązywanie problemów
Więcej informacji o Google OAuth znajdziesz w artykule Korzystanie z 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. W celu wydłużenia okresu ważności tokenów usługa lub konto użytkownika musi uzyskać zatwierdzony identyfikator klienta OAuth 2.0 i wprowadzić go do środowiska produkcyjnego. 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 „Odmowa dostępu”. 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
Więcej informacji o błędach występujących podczas korzystania z PCM znajdziesz w artykule 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żesz zobaczyć ekran „Ta aplikacja nie została zweryfikowana przez Google”, jeśli zakres sdm.service
nie jest skonfigurowany na ekranie zgody OAuth w Google Cloud. Aby pominąć ten ekran, kliknij opcję Zaawansowane, a następnie Otwórz Nazwa projektu (niebezpieczny).
Więcej informacji znajdziesz na ekranie niezweryfikowanej aplikacji.
Nieprawidłowy klient
Jeśli podczas próby uzyskania tokenu dostępu lub odświeżenia tokenu podasz nieprawidłowy klucz tajny klienta OAuth 2.0, 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 tych informacji, aby szybko wdrożyć czynności potrzebne do autoryzacji użytkownikauser i łączenia jego 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 swojej aplikacji, zastępując:
- project-id z dokumentem tożsamości Device Access Project
- oauth2-client-id za pomocą identyfikatora klienta OAuth2 z Twoich danych logowania Google Cloud
- redirect-uri z identyfikatorem URI przekierowania określonym dla używanego identyfikatora klienta OAuth2.
- scope z jednym z dostępnych zasięgó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.
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żyć do wywołania interfejsu SDM API w imieniu użytkownika.
Wyślij żądanie POST do punktu końcowego OAuth Google, zastępując:
- oauth2-client-id i oauth2-client-secret z identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
- authorization-code zastąp kodem otrzymanym w poprzednim kroku
- 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 będzie ukończona, dopóki nie wywołasz interfejsu API przy użyciu 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:
- oauth2-client-id i oauth2-client-secret z identyfikatorem klienta OAuth2 i tajnym kluczem klienta z danych logowania Google Cloud
- refresh-token kodem otrzymanym przy pierwszym pobieraniu 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" }