Как получить электронную почту от пользователя google plus oauth
Ссылка: https://sites.google.com/site/oauthgoog/Home/emaildisplayscope
Из приведенной выше ссылки я добавляю область электронной почты
https://www.googleapis.com/auth/plus.me
https://www.googleapis.com/auth/userinfo.email
Но я не понимаю следующее
После того, как у вас есть действующий токен OAuth, вы можете использовать его для вызова API на конечную точку API-интерфейса Email:
https://www.googleapis.com/userinfo/email
Если токен недействителен, будет возвращена ошибка 401. Если токен действителен, возвращается адрес электронной почты пользователя. API также вернет логическое значение, чтобы указать, подтвердил ли Google, что пользователь владеет этим адресом электронной почты. Однако большинство установленных приложений будут игнорировать это значение.
Как сделать вызов конечной точки API-интерфейса для отображения эл. почты? Используя https://www.googleapis.com/userinfo/email
Ответы
Ответ 1
Задайте свои области действия:
И используйте конечную точку:
https://www.googleapis.com/oauth2/v1/userinfo?alt=json
Использование:
get https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=youraccess_token
Вы получите JSON:
{ "id": "xx",
"name": "xx",
"given_name": "xx",
"family_name": "xx",
"link": "xx",
"picture": "xx",
"gender": "xx",
"locale": "xx"
}
Ответ 2
Области изменились для входа в Google+.
Задайте свои области действия:
https://www.googleapis.com/auth/plus.login
https://www.googleapis.com/auth/userinfo.email
JavaScript-вызовы выглядят следующим образом:
gapi.client.load('oauth2', 'v2', function() {
gapi.client.oauth2.userinfo.get().execute(function(resp) {
// Shows user email
console.log(resp.email);
})
});
gapi.client.load('plus', 'v1', function() {
gapi.client.plus.people.get( {'userId' : 'me'} ).execute(function(resp) {
// Shows profile information
console.log(resp);
})
});
Дополнительная информация https://developers.google.com/+.
Изменить: обратите внимание, что вам не нужны области для plus.me или userinfo.profile.
Ответ 3
Теперь мы используем GoogleAPI с Google +
Как и в декабре 2013 года, здесь представлен самый обновленный веб-сайт;
https://developers.google.com/+/
Затем для SignIn для Web
https://developers.google.com/+/web/signin/
Выбор потока входа
- > Клиентский поток
- > Инициировать входной поток с помощью JavaScript (я считаю, что это новейшая технология)
https://developers.google.com/+/web/signin/javascript-flow
Инициирование потока входа в Google+ с помощью JavaScript
Вы можете запустить поток входа в Google+ с помощью gapi.auth.signIn()метод. Этот метод дает вам большую гибкость, чтобы когда запрашивать у пользователя авторизацию вашего приложения и вход в систему.
https://developers.google.com/+/web/api/javascript#gapiauthsigninparameters
gapi.auth.signIn(параметры)
Инициирует поток OAuth 2.0 на стороне клиента Google+. Похожий на gapi.auth.authorize(), за исключением того, что этот метод поддерживает расширенный Функции входа в Google+, в том числе установки в прямом эфире Android Программы. Этот метод является альтернативой JavaScript для использования Google+ Виджет кнопки входа.
https://developers.google.com/+/web/signin/javascript-flow
- Попробуйте страницу для запуска потока входа с gapi.auth.signIn()
https://google-developers.appspot.com/+/demos/signin_demo_render (SourceCode)
Вы попробуете это и для своего, следуйте
Шаг 1: Создайте идентификатор клиента и секрет клиента
Игнорируйте следующий шаг,
На самом деле вам нужен только клиентский идентификатор и заменить его в исходном коде Попробовать выше.
Добавить область https://www.googleapis.com/auth/userinfo.email
var options = {
'callback': loginFinished,
'approvalprompt': 'force',
'clientid': 'YOURID.apps.googleusercontent.com',
'scope': 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email',
'requestvisibleactions': 'http://schemas.google.com/CommentActivity http://schemas.google.com/ReviewActivity',
'cookiepolicy': 'single_host_origin'
};
Добавить
gapi.client.load('oauth2', 'v2', function()
{
gapi.client.oauth2.userinfo.get()
.execute(function(resp)
{
// Shows user email
console.log(resp.email);
});
});
Вот полный рабочий и сжатый код, основанный на вышесказанном:
<html>
<head>
<title>Google+ Sign-in button demo: rendering with JavaScript</title>
<style type="text/css">
html, body { margin: 0; padding:0;}
#signin-button {
padding: 5px;
}
#oauth2-results pre { margin: 0; padding:0; width: 600px;}
.hide { display: none;}
.show { display: block;}
</style>
<script src="https://apis.google.com/js/client:platform.js" type="text/javascript"></script>
<script type="text/javascript">
var loginFinished = function(authResult)
{
if (authResult)
{
console.log(authResult);
}
gapi.client.load('oauth2', 'v2', function()
{
gapi.client.oauth2.userinfo.get()
.execute(function(resp)
{
// Shows user email
console.log(resp.email);
});
});
};
var options = {
'callback': loginFinished,
'approvalprompt': 'force',
'clientid': 'YOURID.apps.googleusercontent.com',
'scope': 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email',
'requestvisibleactions': 'http://schemas.google.com/CommentActivity http://schemas.google.com/ReviewActivity',
'cookiepolicy': 'single_host_origin'
};
var renderBtn = function()
{
gapi.signin.render('renderMe', options);
}
</script>
</head>
<body onload ="renderBtn()">
<div id="renderMe"></div>
</body>
</html>
Нет вывода HTML, но консоль. поэтому откройте инструменты браузера Developers Console, чтобы просмотреть результат.
Ответ 4
Я сделал это в angularjs, в Ionic framework, и он работает., попробуйте это.
controller("OauthExample", function($scope, $cordovaOauth, $http) {
$scope.googleLogin = function() {
$cordovaOauth.google("YOUR CLIENTID", ["https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile"]).then(function(result) {
window.localStorage.setItem("access_token", result.access_token);
$scope.token=JSON.stringify(result);
}, function(error) {
console.log(error);
});
}
$scope.getProfileInfo = function() {
console.log(window.localStorage.getItem('access_token'));
$http.defaults.headers.common.Authorization = "Bearer " + window.localStorage.getItem("access_token");
$http.get("https://www.googleapis.com/oauth2/v1/userinfo?alt=json")
.success(function(data) {
console.log(data);
console.log(data.email);
})
.error(function(error) {
console.log(error);
});
}
});