Подтвердить что ты не робот

Как получить электронную почту от пользователя 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

4b9b3361

Ответ 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);
            });
    }

});