Node.js Everyauth错误
我正在尝试在我的nodejs应用程序中使用everyauth,但是在尝试通过Google进行身份验证时,我不断遇到以下错误:Node.js Everyauth错误,node.js,api,express,everyauth,Node.js,Api,Express,Everyauth,我正在尝试在我的nodejs应用程序中使用everyauth,但是在尝试通过Google进行身份验证时,我不断遇到以下错误: Error: Step getSession of `google` is promising: session ; however, the step returns nothing. Fix the step by returning the expected values OR by returning a Promise that promises said va
Error: Step getSession of `google` is promising: session ; however, the step returns nothing. Fix the step by returning the expected values OR by returning a Promise that promises said values.
at Step.exec (/home/an/counter/www/node_modules/everyauth/lib/step.js:79:7)
at /home/an/counter/www/node_modules/everyauth/lib/stepSequence.js:26:34
at Promise.fulfill (/home/an/counter/www/node_modules/everyauth/lib/promise.js:44:21)
at /home/an/counter/www/node_modules/everyauth/lib/stepSequence.js:29:19
at Promise.fulfill (/home/an/counter/www/node_modules/everyauth/lib/promise.js:44:21)
at Request._callback (/home/an/counter/www/node_modules/everyauth/lib/modules/google.js:91:15)
at Request.self.callback (/home/an/counter/www/node_modules/everyauth/node_modules/request/request.js:199:22)
at Request.EventEmitter.emit (events.js:98:17)
at Request.<anonymous> (/home/an/counter/www/node_modules/everyauth/node_modules/request/request.js:1036:10)
at Request.EventEmitter.emit (events.js:117:20)
TypeError: Cannot read property 'auth' of undefined
at EveryModule.module.exports.everyModule.submodule.definit.configurable.get.step.accepts.promises.step.accepts.promises.get.step.description.accepts.promises.canBreakTo.step.accepts.promises.step.accepts.promises.step.accepts.promises.step.accepts.promises.step.accepts.promises.step.accepts.promises.step.accepts.promises.stepseq.step.accepts.promises.getAuthUri.requestAuthUri.getCode.getAccessToken.compile.getSession.addToSession.sendResponse.req (/home/an/counter/www/node_modules/everyauth/lib/modules/oauth2.js:234:21)
at EveryModule._module._super (/home/an/counter/www/node_modules/everyauth/lib/step.js:58:18)
at EveryModule._addToSession (/home/an/counter/www/node_modules/everyauth/lib/modules/google.js:34:10)
at Step.exec (/home/an/counter/www/node_modules/everyauth/lib/step.js:60:17)
at /home/an/counter/www/node_modules/everyauth/lib/stepSequence.js:26:34
at Promise.fulfill (/home/an/counter/www/node_modules/everyauth/lib/promise.js:44:21)
at /home/an/counter/www/node_modules/everyauth/lib/stepSequence.js:29:19
at Promise.callback (/home/an/counter/www/node_modules/everyauth/lib/promise.js:12:8)
at /home/an/counter/www/node_modules/everyauth/lib/stepSequence.js:28:19
at Promise.fulfill (/home/an/counter/www/node_modules/everyauth/lib/promise.js:44:21)
http.js:691
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (http.js:691:11)
at ServerResponse.res.setHeader (/home/an/counter/www/node_modules/everyauth/node_modules/connect/lib/patch.js:134:22)
at /home/an/counter/www/node_modules/errorhandler/index.js:139:15
at fs.js:268:14
at Object.oncomplete (fs.js:107:15)
下面是我的user.js:
exports.findOrCreateUser = function (sess, accessToken, extra, googleUser) {
googleUser.refreshToken = extra.refresh_token;
googleUser.expiresIn = extra.expires_in;
var promise = this.Promise();
var user = exports.findUserByGoogleId(googleUser.id) || exports.newUser('google', googleUser);
promise.fulfill(user);
return promise;
}
exports.findUserByGoogleId = function(googleId) {
for (var userID in global.users.usersById) if (googleId==global.users.usersById[userID].google.id) return global.users.usersById[userID];
return false;
}
我用快车4。我已经尝试了所有的建议,我可以找到使用谷歌。npm安装快速会话和npm更新没有帮助。解决方案非常简单,如chmod 777/var/run/redis/redis.sock
(或将用户添加到redis组)
chmod 777
->nono!永远不要运行chmod 777
。这几乎是不需要的!甚至不是为了“测试目的”。如果文件是可读的,那么它是可读的。如果需要写入它的用户
或组
可以写入它,那么它是可写的。绝对不需要给每个人写权限,而忘记了chmod
让它恢复正常正是跨国公司被黑客攻击的原因。不要这样做。永远。我写道。请看!
exports.findOrCreateUser = function (sess, accessToken, extra, googleUser) {
googleUser.refreshToken = extra.refresh_token;
googleUser.expiresIn = extra.expires_in;
var promise = this.Promise();
var user = exports.findUserByGoogleId(googleUser.id) || exports.newUser('google', googleUser);
promise.fulfill(user);
return promise;
}
exports.findUserByGoogleId = function(googleId) {
for (var userID in global.users.usersById) if (googleId==global.users.usersById[userID].google.id) return global.users.usersById[userID];
return false;
}