Gdy prosisz o dostęp do danych użytkownika lub innych zasobów, możesz poprosić o wszystkie zakresy w pierwszej prośbie lub o zakresy tylko w razie potrzeby, korzystając z autoryzacji stopniowej. 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 Twoja aplikacja umożliwia użytkownikom zapisywanie playlist muzycznych na Dysku Google. Możesz poprosić o podanie podstawowych informacji o użytkowniku podczas logowania, a później, gdy użytkownik będzie chciał zapisać pierwszą playlistę, poproś tylko o uprawnienia Dysku Google.
Stosuj tę technikę, jeśli podejrzewasz, że użytkownicy nie logują się, ponieważ ekran zgody jest przytłaczający lub nie wiedzą, dlaczego prosisz o określone uprawnienia. 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.
Gdy później użytkownik chce wykonać działanie wymagające dodatkowych zakresów, aplikacja prosi o te dodatkowe zakresy, a użytkownik zezwala na nie tylko na ekranie zgody.
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}));
});