Node.js EveryAuth获取Google电子邮件地址

我试图检索谷歌电子邮件地址时使用EveryAuth NPM lib进行OAuth2.0调用谷歌。 有没有人设法让电子邮件返回使用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导致exception:

错误:Error 401(Not Found)!! 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 {visibility:visible} 谷歌

那是一个错误。

请求中有错误。 我们知道的就这些。

在EventEmitter的[object Object] .fail(/Users/thegoleffect/Documents/Projects/Spoondate/nitrous/node_modules/everyauth/lib/promise.js:50:15)。 (/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)在IncomingMessage的/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)IncomingMessage。 (/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)

根据谷歌的范围和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; });