【问题标题】:Node.js EveryAuth Get Google Email AddressNode.js EveryAuth 获取 Google 电子邮件地址
【发布时间】:2011-11-05 21:54:50
【问题描述】:

我在使用 EveryAuth NPM 库向 google 进行 OAuth2.0 调用时尝试检索 google 电子邮件地址。有没有人设法让电子邮件返回使用 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;height:55px;margin:0 0 -7px;width:150px}* > #g{margin-left:-2px}#g img{visibility:hidden}* html #g img{visibility:visible}* +html #g img{可见性:可见}

401. 这是一个错误。

您的请求中有错误。 这就是我们所知道的。

在 [object Object].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)

【问题讨论】:

    标签: node.js oauth everyauth


    【解决方案1】:

    根据google,范围和api端点略有不同,这让我有点困惑。如果你将你的 google.js 更改为以下内容,google Auth2.0 api 将返回用户的电子邮件地址。

      .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;
      });
    

    【讨论】:

    • 有效,我看到我在日志中收到了用户电子邮件。但是它不会创建新用户吗?我需要编写自定义 findOrCreateUser 函数吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多