W tym dokumencie wyjaśniono, jak wdrożyć autoryzację OAuth 2.0 w celu uzyskania dostępu do interfejsu API danych YouTube za pośrednictwem aplikacji działających na urządzeniach takich jak telewizory, konsole do gier i drukarki. Dokładniej rzecz ujmując, przepływ ten jest przeznaczony dla urządzeń, które nie mają dostępu do przeglądarki lub mają ograniczone możliwości wprowadzania danych.
OAuth 2.0 umożliwia użytkownikom udostępnianie określonych danych aplikacji przy jednoczesnym zachowaniu poufności nazw, haseł i innych informacji. Na przykład aplikacja telewizyjna może wykorzystać protokół OAuth 2.0, aby uzyskać pozwolenie na wybranie pliku przechowywanego na Dysku Google.
Ponieważ aplikacje wykorzystujące ten przepływ są rozproszone na poszczególnych urządzeniach, zakłada się, że aplikacje nie mogą zachowywać tajemnic. Mogą uzyskiwać dostęp do interfejsów API Google, gdy użytkownik korzysta z aplikacji lub gdy aplikacja działa w tle.
Alternatywy
Jeśli piszesz aplikację przeznaczoną na platformę Android, iOS, macOS, Linux lub Windows (w tym Universal Windows Platform), która ma dostęp do przeglądarki i oferuje pełne możliwości wprowadzania danych, użyj protokołu OAuth 2.0 dla aplikacji mobilnych i stacjonarnych. (Należy stosować ten przepływ nawet jeśli aplikacja jest narzędziem wiersza poleceń bez graficznego interfejsu.)
Jeśli tylko chcesz logować użytkowników za pomocą ich kont Google i używać tokena identyfikacyjnego JWT do uzyskiwania podstawowych informacji o profilu użytkownika, zapoznaj się z artykułem Logowanie na telewizorach i urządzeniach wejściowych o ograniczonej liczbie wejść.
Wymagania wstępne
Włączanie interfejsów API w projekcie
Każda aplikacja, która wywołuje interfejsy API Google, musi włączyć te interfejsy w API Console.
Aby włączyć interfejs API w projekcie:
- Open the API Library w Google API Console.
- If prompted, select a project, or create a new one.
- Aby znaleźć i włączyć interfejs API danych YouTube, skorzystaj ze strony Biblioteka. Znajdź inne interfejsy API, z których będzie korzystać Twoja aplikacja i włącz je również.
Tworzenie danych uwierzytelniających
Każda aplikacja, która używa OAuth 2.0 do uzyskiwania dostępu do interfejsów API Google, musi mieć dane logowania autoryzacji, które identyfikują aplikację na serwerze OAuth 2.0 Google. Poniżej znajdziesz instrukcje tworzenia danych logowania do projektu. Aplikacje mogą następnie używać tych danych logowania do uzyskiwania dostępu do interfejsów API włączonych w tym projekcie.
- Go to the Clients page.
- Kliknij Utwórz klienta.
- Wybierz typ aplikacji Telewizory i urządzenia o ograniczonym wejściu.
- Nadaj nazwę klientowi OAuth 2.0 i kliknij Utwórz.
Zidentyfikuj zakresy dostępu
Zakresy umożliwiają aplikacji żądanie dostępu tylko do potrzebnych jej zasobów, a użytkownikom – kontrolowanie zakresu dostępu przyznawanego aplikacji. Dlatego może istnieć odwrotna zależność między liczbą żądanych zakresów a prawdopodobieństwem uzyskania zgody użytkownika.
Zanim zaczniesz wdrażać autoryzację OAuth 2.0, określ zakresy, do których Twoja aplikacja będzie potrzebować dostępu.
Interfejs YouTube Data API v3 używa tych zakresów:
| Zakres | Opis |
|---|---|
https://www. |
Zarządzanie kontem YouTube |
https://www. |
Wyświetlanie listy aktualnie aktywnych użytkowników wspierających kanał, ich obecnych poziomów i dat rozpoczęcia wsparcia |
https://www. |
Przeglądanie, edytowanie i trwałe usuwanie Twoich filmów, ocen, komentarzy i napisów z YouTube |
https://www. |
Wyświetlanie konta YouTube |
https://www. |
Zarządzanie filmami w YouTube |
https://www. |
Przeglądaj zasoby oraz powiązane treści i zarządzaj nimi w serwisie YouTube |
https://www. |
Przeglądanie prywatnych danych kanału YouTube istotnych podczas rozmowy z partnerem YouTube |
Zobacz listę Dozwolone zakresy dla zainstalowanych aplikacji lub urządzeń.
Uzyskiwanie tokenów dostępu OAuth 2.0
Nawet jeśli aplikacja działa na urządzeniu o ograniczonych możliwościach wprowadzania danych, użytkownicy muszą mieć oddzielny dostęp do urządzenia o większych możliwościach wprowadzania danych, aby ukończyć ten proces autoryzacji. Proces składa się z tych kroków:
- Aplikacja wysyła do serwera autoryzacji Google żądanie, które identyfikuje zakresy, do których aplikacja będzie prosić o uprawnienia dostępu.
- Serwer odpowiada, przesyłając kilka informacji, które są używane w kolejnych krokach, takich jak kod urządzenia i kod użytkownika.
- Wyświetlasz informacje, które użytkownik może wpisać na osobnym urządzeniu, aby autoryzować aplikację.
- Aplikacja zaczyna wysyłać zapytania do serwera autoryzacji Google, aby sprawdzić, czy użytkownik autoryzował aplikację.
- Użytkownik przełącza się na urządzenie z większymi możliwościami wprowadzania danych, uruchamia przeglądarkę internetową, otwiera adres URL wyświetlony w kroku 3 i wpisuje kod, który również jest wyświetlony w kroku 3. Użytkownik może wtedy przyznać (lub odmówić) dostępu do aplikacji.
- Następna odpowiedź na Twoje żądanie odpytywania zawiera tokeny, których aplikacja potrzebuje do autoryzowania żądań w imieniu użytkownika. (Jeśli użytkownik odmówi dostępu do aplikacji, odpowiedź nie będzie zawierać tokenów).
Ten proces ilustruje poniższy obraz:
W sekcjach poniżej znajdziesz szczegółowe wyjaśnienie tych kroków. Biorąc pod uwagę zakres możliwości i środowisk wykonawczych, w jakich mogą działać urządzenia, przykłady przedstawione w tym dokumencie wykorzystują narzędzie wiersza poleceń curl. Przykłady te powinny dać się łatwo przenieść do różnych języków i środowisk wykonawczych.
Krok 1: Poproś o kody urządzeń i użytkowników
Na tym etapie urządzenie wysyła żądanie HTTP POST do serwera autoryzacji Google pod adresem https://oauth2.googleapis.com/device/code, które identyfikuje Twoją aplikację oraz zakresy dostępu, do których Twoja aplikacja chce uzyskać dostęp w imieniu użytkownika.
Należy pobrać ten adres URL z dokumentu Discovery, korzystając z wartości metadanych device_authorization_endpoint. Uwzględnij następujące parametry żądania HTTP:
| Parametry | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
client_id |
Wymagany
Identyfikator klienta aplikacji. Tę wartość znajdziesz w Cloud Console Clients page. |
||||||||||||||||
scope |
Wymagany
Lista zakresów rozdzielona spacjami, która identyfikuje zasoby, do których Twoja aplikacja może uzyskać dostęp w imieniu użytkownika. Te wartości informują ekran zgody, który Google wyświetla użytkownikowi. Zobacz listę Dozwolone zakresy dla zainstalowanych aplikacji lub urządzeń. Zakresy umożliwiają aplikacji żądanie dostępu wyłącznie do zasobów, których potrzebuje, a jednocześnie pozwalają użytkownikom kontrolować zakres dostępu udzielanego aplikacji. Istnieje zatem odwrotna zależność pomiędzy liczbą żądanych zakresów a prawdopodobieństwem uzyskania zgody użytkownika. Interfejs YouTube Data API v3 używa tych zakresów:
Dokument Zakresy interfejsu API protokołu OAuth 2.0 zawiera pełną listę zakresów, których można używać w celu uzyskiwania dostępu do interfejsów API Google. |
||||||||||||||||
Przykłady
Poniższy fragment kodu pokazuje przykładowe żądanie:
POST /device/code HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded client_id=client_id&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.force-ssl
Ten przykład pokazuje polecenie curl do wysłania tego samego żądania:
curl -d "client_id=client_id&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.force-ssl" \
https://oauth2.googleapis.com/device/code
Krok 2. Przetwórz odpowiedź serwera autoryzacji
Serwer autoryzacji zwróci jedną z następujących odpowiedzi:
Odpowiedź o sukcesie
Jeśli żądanie jest prawidłowe, odpowiedź będzie obiektem JSON zawierającym te właściwości:
| Właściwości | |
|---|---|
device_code |
Wartość, którą Google jednoznacznie przypisuje do identyfikowania urządzenia, na którym działa aplikacja wysyłająca żądanie autoryzacji. Użytkownik autoryzuje to urządzenie z innego urządzenia z większymi możliwościami wprowadzania danych. Użytkownik może na przykład użyć laptopa lub telefonu komórkowego, aby autoryzować aplikację działającą na telewizorze. W tym przypadku device_code identyfikuje telewizor.
Ten kod umożliwia urządzeniu, na którym działa aplikacja, bezpieczne określenie, czy użytkownik przyznał lub odmówił dostępu. |
expires_in |
Czas (w sekundach), przez który są ważne wartości device_code i user_code. Jeśli w tym czasie użytkownik nie ukończy procesu autoryzacji, a urządzenie nie będzie odpytywać o decyzję użytkownika, może być konieczne ponowne rozpoczęcie tego procesu od kroku 1. |
interval |
Czas (w sekundach), przez jaki urządzenie powinno czekać między żądaniami sondowania. Jeśli na przykład wartość wynosi 5, urządzenie powinno wysyłać żądanie sprawdzania do serwera autoryzacji Google co 5 sekund. Więcej informacji znajdziesz w kroku 3. |
user_code |
Wartość z uwzględnieniem wielkości liter, która informuje Google o zakresach, do których aplikacja prosi o dostęp. Interfejs użytkownika poprosi użytkownika o wpisanie tej wartości na osobnym urządzeniu z większymi możliwościami wprowadzania danych. Google używa tej wartości, aby wyświetlać prawidłowy zestaw zakresów, gdy prosi użytkownika o przyznanie dostępu do Twojej aplikacji. |
verification_url |
Adres URL, do którego użytkownik musi przejść na osobnym urządzeniu, aby wpisać user_code i przyznać lub odmówić dostępu do aplikacji. Ta wartość będzie też wyświetlana w interfejsie. |
Poniższy fragment kodu pokazuje przykładową odpowiedź:
{ "device_code": "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8", "user_code": "GQVQ-JKEC", "verification_url": "https://www.google.com/device", "expires_in": 1800, "interval": 5 }
Odpowiedź o przekroczeniu limitu
Jeśli liczba żądań kodu urządzenia przekroczy limit powiązany z Twoim identyfikatorem klienta, otrzymasz odpowiedź 403 zawierającą ten błąd:
{ "error_code": "rate_limit_exceeded" }
W takim przypadku użyj strategii wycofywania, aby zmniejszyć częstotliwość wysyłania żądań.
Krok 3. Wyświetl kod użytkownika
Wyświetl użytkownikowi wartości verification_url i user_code uzyskane w kroku 2. Obie wartości mogą zawierać dowolny znak z zestawu znaków US-ASCII, który można wydrukować. Treści wyświetlane użytkownikowi powinny zawierać instrukcje, aby otworzył on stronę verification_url na innym urządzeniu i wpisał user_code.
Projektując interfejs, pamiętaj o tych zasadach:
user_code- Wartość
user_codemusi być wyświetlana w polu, które może pomieścić 15 znaków o rozmiarze „W”. Innymi słowy, jeśli możesz prawidłowo wyświetlić kodWWWWWWWWWWWWWWW, interfejs jest prawidłowy i zalecamy użycie tego ciągu znaków podczas testowania sposobu wyświetlaniauser_codew interfejsie. - Znak
user_codeuwzględnia wielkość liter i nie należy go w żaden sposób modyfikować, np. zmieniać wielkości liter ani wstawiać innych znaków formatowania.
- Wartość
verification_url- Miejsce, w którym wyświetlasz wartość
verification_url, musi być wystarczająco szerokie, aby pomieścić ciąg URL o długości 40 znaków. - Nie modyfikuj w żaden sposób znaku
verification_url, z wyjątkiem opcjonalnego usunięcia schematu na potrzeby wyświetlania. Jeśli planujesz usunąć schemat (np.https://) z adresu URL ze względu na wyświetlanie, upewnij się, że Twoja aplikacja obsługuje wariantyhttpihttps.
- Miejsce, w którym wyświetlasz wartość
verification_url.
Krok 4. Wyślij zapytanie do serwera autoryzacji Google
Użytkownik będzie korzystać z osobnego urządzenia, aby przejść do verification_url i przyznać (lub odmówić) dostępu, więc urządzenie wysyłające żądanie nie otrzyma automatycznie powiadomienia, gdy użytkownik odpowie na żądanie dostępu. Z tego powodu urządzenie wysyłające żądanie musi odpytywać serwer autoryzacji Google, aby określić, kiedy użytkownik odpowie na żądanie.
Urządzenie wysyłające prośbę powinno kontynuować wysyłanie żądań odpytywania, dopóki nie otrzyma odpowiedzi wskazującej, że użytkownik odpowiedział na prośbę o dostęp, lub dopóki nie wygasną wartości device_code i user_code uzyskane w
kroku 2. Wartość interval zwrócona w kroku 2 określa czas oczekiwania w sekundach między żądaniami.
Adres URL punktu końcowego do sondowania to https://oauth2.googleapis.com/token. Żądanie odpytywania zawiera te parametry:
| Parametry | |
|---|---|
client_id |
Identyfikator klienta aplikacji. Tę wartość znajdziesz w Cloud Console Clients page. |
client_secret |
Tajny klucz klienta dla podanego parametru client_id. Tę wartość znajdziesz w Cloud Console
Clients page. |
device_code |
z device_code zwróconym przez serwer autoryzacji w kroku 2. |
grant_type |
Ustaw ją na urn:ietf:params:oauth:grant-type:device_code. |
Przykłady
Poniższy fragment kodu pokazuje przykładowe żądanie:
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded client_id=client_id& client_secret=client_secret& device_code=device_code& grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code
Ten przykład pokazuje polecenie curl do wysłania tego samego żądania:
curl -d "client_id=client_id&client_secret=client_secret& \
device_code=device_code& \
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code" \
-H "Content-Type: application/x-www-form-urlencoded" \
https://oauth2.googleapis.com/tokenKrok 5. Użytkownik odpowiada na prośbę o dostęp
Na ilustracji poniżej widać stronę podobną do tej, którą użytkownicy zobaczą po kliknięciu ikony verification_url wyświetlonej w kroku 3:
Po wpisaniu znaku user_code i zalogowaniu się w Google (jeśli użytkownik nie jest jeszcze zalogowany) wyświetli się ekran zgody podobny do tego poniżej:
Krok 6. Przetwarzanie odpowiedzi na prośby o głosowanie
Serwer autoryzacji Google odpowiada na każde żądanie sprawdzające jedną z tych odpowiedzi:
Dostęp przyznany
Jeśli użytkownik przyznał dostęp do urządzenia (klikając Allow na ekranie zgody), odpowiedź zawiera token dostępu i token odświeżania. Te tokeny umożliwiają urządzeniu dostęp do interfejsów API Google w imieniu użytkownika. (Właściwość scope w odpowiedzi określa, do których interfejsów API urządzenie ma dostęp).
W tym przypadku odpowiedź interfejsu API zawiera te pola:
| Pola | |
|---|---|
access_token |
Token wysyłany przez aplikację w celu autoryzacji żądania do interfejsu API Google. |
expires_in |
Pozostały okres ważności tokena dostępu w sekundach. |
refresh_token |
Token, którego możesz użyć do uzyskania nowego tokena dostępu. Tokeny odświeżania są ważne do momentu, gdy użytkownik cofnie dostęp lub token odświeżania wygaśnie. Pamiętaj, że tokeny odświeżania są zawsze zwracane w przypadku urządzeń. |
refresh_token_expires_in |
Pozostały czas ważności tokena odświeżania w sekundach. Ta wartość jest ustawiana tylko wtedy, gdy użytkownik przyzna dostęp czasowy. |
scope |
Zakresy dostępu przyznane przez access_token w postaci listy ciągów znaków rozdzielonych spacjami, w których wielkość liter jest rozróżniana. |
token_type |
Typ zwracanego tokena. Obecnie wartość tego pola jest zawsze ustawiona na Bearer. |
Poniższy fragment przedstawia przykładową odpowiedź:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "scope": "openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email", "token_type": "Bearer", "refresh_token": "1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
Tokeny dostępu mają ograniczony okres ważności. Jeśli Twoja aplikacja potrzebuje dostępu do interfejsu API przez dłuższy czas, może użyć tokena odświeżania w celu uzyskania nowego tokena dostępu. Jeśli Twoja aplikacja potrzebuje tego typu dostępu, powinna zapisać token odświeżania do późniejszego wykorzystania.
Odmowa dostępu
Jeśli użytkownik odmówi udzielenia dostępu do urządzenia, serwer odpowie kodem stanu odpowiedzi HTTP 403 (Forbidden). Odpowiedź zawiera następujący błąd:
{ "error": "access_denied", "error_description": "Forbidden" }
Oczekiwanie na autoryzację
Jeśli użytkownik nie ukończył jeszcze procesu autoryzacji, serwer zwraca kod stanu odpowiedzi HTTP 428 (Precondition Required). Odpowiedź zawiera następujący błąd:
{ "error": "authorization_pending", "error_description": "Precondition Required" }
Zbyt częste przeprowadzanie ankiet
Jeśli urządzenie zbyt często wysyła żądania sondowania, serwer zwraca kod stanu odpowiedzi HTTP 403 (Forbidden). Odpowiedź zawiera następujący błąd:
{ "error": "slow_down", "error_description": "Forbidden" }
Inne błędy
Serwer autoryzacji zwraca również błędy, jeśli żądanie sondowania nie zawiera wymaganych parametrów lub ma nieprawidłową wartość parametru. Te żądania zwykle mają kod stanu odpowiedzi HTTP 400 (Bad Request) lub 401 (Unauthorized). Do błędów tych zaliczają się:
| Błąd | Kod stanu HTTP | Opis |
|---|---|---|
admin_policy_enforced |
400 |
Konto Google nie może autoryzować jednego lub większej liczby żądanych zakresów ze względu na zasady administratora Google Workspace. Więcej informacji o tym, jak administrator może ograniczyć dostęp do zakresów, dopóki dostęp nie zostanie wyraźnie przyznany Twojemu identyfikatorowi klienta OAuth, znajdziesz w artykule pomocy dla administratora Google Workspace zatytułowanym Kontrolowanie, które aplikacje innych firm i aplikacje wewnętrzne mają dostęp do danych Google Workspace. |
invalid_client |
401 |
Nie znaleziono klienta OAuth. Na przykład ten błąd występuje, gdy wartość parametru Typ klienta OAuth jest nieprawidłowy. Upewnij się, że typ aplikacji dla identyfikatora klienta jest ustawiony na Telewizory i urządzenia o ograniczonym wejściu. |
invalid_grant |
400 |
Wartość parametru code jest nieprawidłowa, została już zażądana lub nie można jej przeanalizować. |
unsupported_grant_type |
400 |
Wartość parametru grant_type jest nieprawidłowa. |
org_internal |
403 |
Identyfikator klienta OAuth w żądaniu jest częścią projektu ograniczającego dostęp do kont Google w określonej organizacji Google Cloud. Potwierdź konfigurację typu użytkownika dla swojej aplikacji OAuth. |
Wywoływanie interfejsów API Google
Gdy aplikacja uzyska token dostępu, może go używać do wywoływania interfejsu Google API w imieniu danego konta użytkownika, jeśli przyznano zakresy dostępu wymagane przez interfejs API. Aby to zrobić, uwzględnij token dostępu w żądaniu do interfejsu API, dodając parametr zapytania access_token lub wartość nagłówka HTTP AuthorizationBearer. W miarę możliwości preferowany jest nagłówek HTTP, ponieważ ciągi zapytań są zwykle widoczne w logach serwera. W większości przypadków możesz użyć biblioteki klienta do skonfigurowania wywołań interfejsów API Google (na przykład podczas wywoływania interfejsu API YouTube Live Streaming API).
Należy pamiętać, że interfejs API YouTube Live Streaming nie obsługuje przepływu konta usługi. Ponieważ nie ma możliwości połączenia konta usługi z kontem YouTube, próby autoryzacji żądań za pomocą tego przepływu spowodują błąd NoLinkedYouTubeAccount.
Wszystkie interfejsy API Google i ich zakresy możesz wypróbować na stronie OAuth 2.0 Playground.
Przykłady żądań HTTP GET
Wywołanie punktu końcowego
liveBroadcasts.list (interfejs API YouTube Live Streaming) przy użyciu nagłówka HTTP Authorization: Bearer może wyglądać następująco. Pamiętaj, że musisz podać własny token dostępu:
GET /youtube/v3/liveBroadcasts?part=id%2Csnippet&mine=true HTTP/1.1 Host: www.googleapis.com Authorization: Bearer access_token
Oto wywołanie tego samego interfejsu API dla uwierzytelnionego użytkownika za pomocą parametru ciągu zapytania access_token:
GET https://www.googleapis.com/youtube/v3/liveBroadcasts?access_token=access_token&part=id%2Csnippet&mine=true
curl przykładu
Możesz przetestować te polecenia za pomocą aplikacji wiersza poleceń curl. Oto przykład, w którym użyto opcji nagłówka HTTP (preferowanej):
curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/v3/liveBroadcasts?part=id%2Csnippet&mine=true
Możesz też wybrać opcję parametru ciągu zapytania:
curl https://www.googleapis.com/youtube/v3/liveBroadcasts?access_token=access_token&part=id%2Csnippet&mine=true
Odświeżanie tokena dostępu
Tokeny dostępu okresowo wygasają i stają się nieprawidłowymi danymi uwierzytelniającymi dla powiązanego żądania API. Możesz odświeżyć token dostępu bez proszenia użytkownika o uprawnienia (nawet gdy użytkownik jest nieobecny), jeśli poprosisz o dostęp offline do zakresów powiązanych z tokenem.
Aby odświeżyć token dostępu, aplikacja wysyła żądanie HTTPS POST do serwera autoryzacji Google (https://oauth2.googleapis.com/token), które zawiera te parametry:
| Pola | |
|---|---|
client_id |
Identyfikator klienta uzyskany z API Console. |
client_secret |
Opcjonalny
Tajny klucz klienta uzyskany z API Console. |
grant_type |
Zgodnie ze specyfikacją OAuth 2.0 wartość tego pola musi być ustawiona na refresh_token. |
refresh_token |
Token odświeżania zwrócony po wymianie kodu autoryzacji. |
Poniższy fragment kodu pokazuje przykładowe żądanie:
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded client_id=your_client_id& refresh_token=refresh_token& grant_type=refresh_token
Dopóki użytkownik nie cofnie dostępu przyznanego aplikacji, serwer tokenów zwraca obiekt JSON zawierający nowy token dostępu. Poniższy fragment kodu pokazuje przykładową odpowiedź:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "scope": "https://www.googleapis.com/auth/drive.metadata.readonly https://www.googleapis.com/auth/calendar.readonly", "token_type": "Bearer" }
Pamiętaj, że liczba tokenów odświeżania, które zostaną wydane, jest ograniczona. Obowiązuje limit dla każdej kombinacji klient/użytkownik i inny limit dla każdego użytkownika we wszystkich klientach. Tokeny odświeżania należy zapisywać w pamięci długoterminowej i używać ich tak długo, jak są ważne. Jeśli aplikacja wyśle zbyt wiele żądań tokenów odświeżania, może przekroczyć te limity. W takim przypadku starsze tokeny odświeżania przestaną działać.
Unieważnienie tokena
W niektórych przypadkach użytkownik może chcieć cofnąć dostęp przyznany aplikacji. Użytkownik może cofnąć dostęp, otwierając Ustawienia konta. Więcej informacji znajdziesz w sekcji Usuwanie dostępu strony lub aplikacji w artykule pomocy Strony internetowe i aplikacje innych firm z dostępem do Twojego konta.
Aplikacja może też programowo unieważnić przyznany jej dostęp. Programowe wycofywanie jest ważne w przypadkach, gdy użytkownik rezygnuje z subskrypcji, usuwa aplikację lub zasoby interfejsu API wymagane przez aplikację uległy znacznym zmianom. Innymi słowy, część procesu usuwania może obejmować żądanie interfejsu API, aby upewnić się, że uprawnienia przyznane wcześniej aplikacji zostały usunięte.
Aby programowo unieważnić token, aplikacja wysyła żądanie do https://oauth2.googleapis.com/revoke i dołącza token jako parametr:
curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
https://oauth2.googleapis.com/revoke?token={token}Może to być token dostępu lub token odświeżania. Jeśli token jest tokenem dostępu i ma odpowiedni token odświeżania, token odświeżania również zostanie unieważniony.
Jeśli wycofanie zostanie przetworzone, kod stanu HTTP odpowiedzi to 200. W przypadku błędów zwracany jest kod stanu HTTP 400 wraz z kodem błędu.
Dozwolone zakresy
Proces OAuth 2.0 na urządzeniach jest obsługiwany tylko w przypadku tych zakresów:
OpenID Connect, Logowanie przez Google
emailopenidprofile
Drive API
https://www.googleapis.com/auth/drive.appdatahttps://www.googleapis.com/auth/drive.file
YouTube API
https://www.googleapis.com/auth/youtubehttps://www.googleapis.com/auth/youtube.readonly
Dostęp zależny od czasu
Dostęp czasowy umożliwia użytkownikowi przyznanie aplikacji dostępu do jego danych na ograniczony czas w celu wykonania działania. Dostęp czasowy jest dostępny w wybranych usługach Google podczas procesu uzyskiwania zgody. Użytkownicy mogą przyznać dostęp na ograniczony czas. Przykładem jest interfejs Data Portability API, który umożliwia jednorazowe przeniesienie danych.
Gdy użytkownik przyzna Twojej aplikacji dostęp czasowy, token odświeżania wygaśnie po upływie określonego czasu. Pamiętaj, że tokeny odświeżania mogą zostać unieważnione wcześniej w określonych okolicznościach. Szczegółowe informacje znajdziesz w tych przypadkach. Pole refresh_token_expires_in zwrócone w odpowiedzi wymiany kodu autoryzacji w takich przypadkach reprezentuje czas pozostały do wygaśnięcia tokena odświeżania.
Wdrażanie Ochrony wszystkich kont
Dodatkowym krokiem, który należy podjąć w celu ochrony kont użytkowników, jest wdrożenie ochrony międzykontowej za pomocą usługi ochrony międzykontowej Google. Ta usługa umożliwia subskrybowanie powiadomień o zdarzeniach związanych z bezpieczeństwem, które dostarczają aplikacji informacji o ważnych zmianach na koncie użytkownika. Na podstawie tych informacji możesz podejmować działania w zależności od tego, jak zdecydujesz reagować na zdarzenia.
Oto przykłady typów zdarzeń wysyłanych do Twojej aplikacji przez usługę ochrony kont Google:
-
https://schemas.openid.net/secevent/risc/event-type/sessions-revoked -
https://schemas.openid.net/secevent/oauth/event-type/token-revoked -
https://schemas.openid.net/secevent/risc/event-type/account-disabled
Więcej informacji o wdrażaniu ochrony wszystkich kont i pełną listę dostępnych zdarzeń znajdziesz na stronie Ochrona kont użytkowników za pomocą ochrony wszystkich kont .