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:
- project-id z dokumentem tożsamości Device Access Project
- oauth2-client-id z identyfikatorem klienta OAuth2 z danych logowania Google Cloud
- redirect-uri z identyfikatorem URI przekierowania określonym dla używanego identyfikatora klienta OAuth2.
- 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:
- oauth2-client-id i oauth2-client-secret z identyfikatorem klienta OAuth2 i jego tajnym kluczem 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 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:
- oauth2-client-id i oauth2-client-secret z identyfikatorem klienta OAuth2 i jego tajnym kluczem z danych logowania Google Cloud
- 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" }