Вход в Google auth2 настроить область без openid
Я хочу настроить область, чтобы разрешить только "электронную почту" и "профиль", без "openid"
потому что я хотел бы сделать это, запрашивая только доступ к электронной почте и основной информации профиля.
Я попытался сделать это с помощью мета:
<meta name="google-signin-scope" content="email profile">
или JS:
gapi.auth2.init({
client_id: 'xxxxxxxxx.apps.googleusercontent.com',
scope: 'email profile'
});
Но это не работает: в сгенерированном URL всегда есть область действия "openid"...
Как я могу "сбросить" прицел и разрешить только то, что я хочу?
1 ответ
BasicProfile требует области видимости профиля электронной почты.
Вы можете отключить базовый профиль и требовать только области "профиля электронной почты":
<meta name="google-signin-fetch_basic_profile" content="false">
<meta name="google-signin-scope" content="profile email">
Обратите внимание, что в этом случае GoogleUser.getBasicProfile() вернет значение null. Вы должны вручную получить данные "профиля" и "электронной почты".
Полностью рабочий пример (вы должны заменить YOUR_CLIENT_ID на ваш фактический client_id):
<html>
<head>
<meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
<meta name="google-signin-fetch_basic_profile" content="false">
<meta name="google-signin-scope" content="profile email">
</head>
<body>
<script>
function requestEmailData() {
gapi.client.load('oauth2', 'v2', function() {
gapi.client.oauth2.userinfo.get().execute(function(resp) {
// Shows user email
console.log(resp.email);
})
});
}
function requestProfileData() {
gapi.client.load('plus', 'v1', function() {
gapi.client.plus.people.get( {'userId' : 'me'} ).execute(function(resp) {
// Shows profile information
console.log(resp);
})
});
}
function onSuccess() {
gapi.load('client', function() {
// based on http://stackru.com/a/15384981
requestEmailData();
requestProfileData();
});
}
</script>
<div class="g-signin2" data-onsuccess="onSuccess"></div>
<script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script>
</body>
</html>
Обратите внимание, что вам нужно включить Google+ API в консоли разработчиков, чтобы запрашивать данные профиля. Для этого
- перейдите на https://console.developers.google.com/.
- выберите проект
- перейти к API и авторизация> API
- найдите и включите Google+ API.