Wysyłanie prośby o dodatkowe uprawnienia

Pytając użytkownika o uprawnienia dostępu do danych użytkownika lub innych zasobów, możesz z góry zażądać wszystkich zakresów w żądaniu lub tylko w razie potrzeby, korzystając z autoryzacji przyrostowej. Dzięki stopniowemu autoryzowaniu aplikacja początkowo prosi tylko o zakresy wymagane do jej uruchomienia, a potem o dodatkowe zakresy, gdy są potrzebne nowe uprawnienia. W tym celu wyświetla użytkownikowi odpowiedni kontekst.

Załóżmy na przykład, że aplikacja umożliwia użytkownikom zapisywanie playlist muzycznych na Dysku Google. Aplikacja może prosić o podstawowe dane użytkownika przy logowaniu, a później, gdy użytkownik będzie gotowy do zapisania swojej pierwszej playlisty, prosi tylko o uprawnienia do korzystania z Dysku Google.

Skorzystaj z tej metody, jeśli podejrzewasz, że użytkownicy nie logują się, ponieważ ekran zgody przytłacza lub nie wiesz, dlaczego prosimy o przyznanie określonych uprawnień. Poniższe instrukcje dotyczą internetu i są oparte na instrukcjach dodawania przycisku logowania po stronie klienta: Tworzenie przycisku logowania Google 2.0. Więcej informacji o stopniowej autoryzacji w internecie znajdziesz w dokumentacji OAuth 2.0.

Prośba o dodatkowe zakresy

Podczas logowania aplikacja prosi o „podstawowe” zakresy dostępu, które obejmują zakres logowania profile oraz wszystkie inne początkowe zakresy dostępu wymagane przez aplikację do działania. Później, gdy użytkownik chce wykonać działanie, które wymaga dodatkowych zakresów, aplikacja prosi o te zakresy, a użytkownik autoryzuje na ekranie zgody tylko nowe zakresy.

Krok 1. Poproś o zakresy podstawowe

Podczas inicjowania logowania przez Google poproś o zakres podstawowy profile. Ten krok jest uwzględniony w sekcji Tworzenie przycisku logowania Google 2.0.

auth2 = gapi.auth2.init({
    client_id: 'CLIENT_ID.apps.googleusercontent.com',
    cookiepolicy: 'single_host_origin', /** Default value **/
    scope: 'profile' });                /** Base scope **/

Krok 2. Poproś o dodatkowe uprawnienia

W przypadku dodatkowych zakresów żądań poproś o nich, tworząc obiekt opcji z zakresami, które chcesz dodać, a następnie wywołując funkcję user.grant({scope: [OPTIONS BUILDER]}).then(successFunction, failFunction);:

const options = new gapi.auth2.SigninOptionsBuilder();
options.setScope('email https://www.googleapis.com/auth/drive');

googleUser = auth2.currentUser.get();
googleUser.grant(options).then(
    function(success){
      console.log(JSON.stringify({message: "success", value: success}));
    },
    function(fail){
      alert(JSON.stringify({message: "fail", value: fail}));
    });