Node.js EveryAuth Получить адрес электронной почты Google - PullRequest
2 голосов
/ 01 ноября 2011

Я пытаюсь получить адрес электронной почты Google при вызове Google через OAuth2.0 с использованием библиотеки EveryAuth NPM lib. Кому-нибудь удалось получить электронное письмо для возврата с использованием EveryAuth?

everyauth.google
  .entryPath('/auth/google')
  .callbackPath('/auth/google/callback')
  .appId('216450162097.apps.googleusercontent.com')
  .appSecret('8b6yf2nznWHgAu7iKNyGn-0F')
  .scope(['https://www.googleapis.com/auth/userinfo.email'])
  .findOrCreateUser( function(session, userAttributes) {
    console.log(userAttributes);  })
  .redirectPath('/'); 

Область действия: https://www.googleapis.com/auth/userinfo.email вызывает исключение:

Ошибка: ошибка 401 (Не найден) !! 1 display: block; высота: 55px; поле: 0 0 -7px; ширина: 150px} *> #g {margin-left: -2px} #g img {видимость: скрытая} * html #g img {видимость: видимая} * + html #g img {видимость: видимая} Google

401. Это ошибка.

В вашем запросе произошла ошибка. Это все, что мы знаем.

в [объектный объект] .fail (/Users/thegoleffect/Documents/Projects/Spoondate/nitrous/node_modules/everyauth/lib/promise.js:50:15) на EventEmitter. (/Users/thegoleffect/Documents/Projects/Spoondate/nitrous/node_modules/everyauth/lib/modules/google.js:58:15) на EventEmitter.emit (events.js: 67: 17) в EventEmitter._respond (/Users/thegoleffect/Documents/Projects/Spoondate/nitrous/node_modules/everyauth/node_modules/restler/lib/restler.js:127:12) в EventEmitter._fireEvents (/Users/thegoleffect/Documents/Projects/Spoondate/nitrous/node_modules/everyauth/node_modules/restler/lib/restler.js:131:52) в /Users/thegoleffect/Documents/Projects/Spoondate/nitrous/node_modules/everyauth/node_modules/restler/lib/restler.js:115:19 на входящем сообщении. (/Users/thegoleffect/Documents/Projects/Spoondate/nitrous/node_modules/everyauth/node_modules/restler/lib/restler.js:205:5) на входящем сообщении. (/Users/thegoleffect/Documents/Projects/Spoondate/nitrous/node_modules/everyauth/node_modules/restler/lib/restler.js:113:32) на IncomingMessage.emit (events.js: 81: 20) в HTTPParser.onMessageComplete (http.js: 133: 23)

1 Ответ

1 голос
/ 05 ноября 2011

Согласно google область действия и конечная точка API немного отличаются, что меня немного смутило.Если вы внесете следующие изменения в свой google.js, API Google Auth2.0 вернет адрес электронной почты пользователя.

  .fetchOAuthUser( function (accessToken) {
    var promise = this.Promise();
    rest.get('https://www.googleapis.com/userinfo/email', {
      query: { oauth_token: accessToken, alt: 'json' }
    }).on('success', function (data, res) {
      console.log(data);
      var oauthUser = { email: data };
      promise.fulfill(oauthUser);
    }).on('error', function (data, res) {
      console.log(data);
      promise.fail(data);
    });
    return promise;
  });
...