Javascript Passport Google OAuth回调在Web服务中使用时不工作
我在Node.js web服务项目中使用了Passport Google OAuth。我正在使用OAuth2策略 我使用的过程是调用web服务方法来验证用户的Gmail帐户。最初,我提供原始HTMl,这是我通过调用Passport google OAuth收到的。这很好用 然后我用有效的Gmail帐号登录。一旦回调Url被google调用,服务器就会进入无限循环,并在固定的时间间隔后一次又一次地调用回调Url 我的Google Passport策略配置如下:Javascript Passport Google OAuth回调在Web服务中使用时不工作,javascript,node.js,api,oauth,passport-google-oauth,Javascript,Node.js,Api,Oauth,Passport Google Oauth,我在Node.js web服务项目中使用了Passport Google OAuth。我正在使用OAuth2策略 我使用的过程是调用web服务方法来验证用户的Gmail帐户。最初,我提供原始HTMl,这是我通过调用Passport google OAuth收到的。这很好用 然后我用有效的Gmail帐号登录。一旦回调Url被google调用,服务器就会进入无限循环,并在固定的时间间隔后一次又一次地调用回调Url 我的Google Passport策略配置如下: //在Passport中使用Goo
//在Passport中使用Google策略。
//Passport中的策略需要一个“verify”函数,该函数接受
//凭据(在本例中为accessToken、refreshToken和Google
//配置文件),并使用用户对象调用回调。
passport.use(谷歌新战略)({
clientID:“94863070836-2T6estiv81gtv0s9n6iptoava4o1cpa.apps.googleusercontent.com”,
客户秘密:“OMUGRNR7NAD2YMMEFIZDBLL”,
回调URL:“http://localhost:4000/api/auth/google/callback"
},
功能(令牌、刷新令牌、配置文件、完成){
log('内部全局回调');
//使代码异步
//在我们从谷歌获得所有数据之前,User.findOne不会启动
process.nextTick(函数(){
//尝试根据用户的google id查找用户
User.findOne({'google.id':profile.id},函数(err,User){
如果(错误)
返回完成(err);
如果(用户){
//如果找到用户,请将其登录
返回完成(空,用户);
}否则{
//如果用户不在我们的数据库中,请创建一个新用户
var newUser=newUser();
//设置所有相关信息
newUser.google.id=profile.id;
newUser.google.token=令牌;
newUser.google.name=profile.displayName;
newUser.google.email=profile.emails[0].value;//提取第一封电子邮件
返回完成(null,newUser);
}
});
});
}));代码>您的路由可能有问题。请看这里的教程
这是我见过的最好的。我也实现了类似的功能 您的路线可能有问题。请看这里的教程
这是我见过的最好的。我也实现了类似的功能 你确定Passport Google OAuth不需要会话变量吗?我见过一些例子,其中它不需要会话变量。此外,在API服务器中,我不需要存储会话。我使用fiddler检查请求和响应,在响应中,我得到了回调URL的以下错误:HTTP/1.1504 fiddler-接收失败日期:Fri,2015年7月31日08:34:40 GMT内容类型:text/html;charset=UTF-8连接:关闭缓存控制:无缓存,必须重新验证时间戳:14:04:40.638[Fiddler]ReadResponse()失败:服务器未对此请求返回完整响应。服务器返回了0字节。从您的日志中可以明显看出,Google确实调用了您的回调,但它没有包含响应。我不能告诉你为什么。你确定Passport Google OAuth不需要会话变量吗?我看到过一些例子,其中它不需要会话变量。此外,在API服务器中,我不需要存储会话。我使用fiddler检查请求和响应,在响应中,我得到了回调URL的以下错误:HTTP/1.1504 fiddler-接收失败日期:Fri,2015年7月31日08:34:40 GMT内容类型:text/html;charset=UTF-8连接:关闭缓存控制:无缓存,必须重新验证时间戳:14:04:40.638[Fiddler]ReadResponse()失败:服务器未对此请求返回完整响应。服务器返回了0字节。从您的日志中可以明显看出,Google确实调用了您的回调,但它没有包含响应。我不能告诉你为什么。Praveen我也遵循了同样的教程。当我在Web应用程序中遵循它时,它工作得很好。但是当我在Web服务中使用Passport Gmail OAuth时,我的回调url被空响应击中……Praveen我也遵循了相同的教程。当我在Web应用程序中遵循它时,它工作得很好。但是当我在Web服务中使用Passport Gmail OAuth时,我的回调url被空响应击中。。。