Я экспериментирую с OAuth2 в своем приложении angular 6. Я использовал этот пример плунжера в качестве руководства:
http://embed.plnkr.co/n0pFS3y74EpJzwgscrBu/
Я пытаюсь определить границы. В приведенном выше примере области видимости установлены в виде массива:
private scope = [
'profile',
'email',
'https://www.googleapis.com/auth/plus.me',
'https://www.googleapis.com/auth/contacts.readonly',
'https://www.googleapis.com/auth/admin.directory.user.readonly'
].join(' ');
И профиль, который я получаю от googleIUser.getBasicProfile (), такой:
Eea: "113986668155277652098"
Paa: "https://lh3.googleusercontent.com/-g38Ut0XhNpU/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rdLNEidxfUSzyQM2wn1S7uc2kFlBg/s96-c/photo.jpg"
U3: "subject46.2000series@gmail.com"
ig: "subject46 2000series"
ofa: "subject46"
wea: “2000series"
Теперь, если я закомментирую профиль и отправлю электронное письмо, как это:
private scope = [
//‘profile’,
//‘email’,
'https://www.googleapis.com/auth/plus.me',
'https://www.googleapis.com/auth/contacts.readonly',
'https://www.googleapis.com/auth/admin.directory.user.readonly'
].join(' ‘);
Я все еще получаю тот же профиль пользователя, и он по-прежнему содержит мою электронную почту. В действительности все в googleUser выглядит одинаково.
Так что кажется, что область не определяет то, что я получаю от API. Конечно, токены разные (access_token и id_token), но они все равно различаются каждый раз.
Мое исследование говорит мне, что область действия определяет, к чему имеет доступ токен доступа, поэтому, возможно, он определяет информацию, встроенную в сам токен доступа (другими словами, я не должен искать различий в профиле пользователя или чем-то еще еще). Но почему же, когда я комментирую профиль и электронную почту, я все равно получаю доступ к профилю пользователя и адресу электронной почты?
Кто-нибудь может объяснить, пожалуйста, области применения OAuth2 немного более четко? Спасибо.