使用MEAN堆栈的Google Oauth实现

我对我正在设计的简单应用程序的体系结构有所怀疑。

我的基于rest的api服务器位于http:// localhost:3000的Node中我的客户端使用http:// localhost:4200在Angular 2中编写

在开发我的休息节点api服务器时,我成功实现了使用http:// localhost:3000 / auth / google测试的通行证谷歌身份验证,并且我重定向到了Google登录页面,然后在登录后进一步重定向到我的/ profile由我的rest节点api提供服务

现在我试图做同样的事情,但起点是我的角度客户端,它调用节点api服务器来调用谷歌身份验证。 所以我最初的请求从http:// localhost:4200开始,它执行http.get到http:// localhost:3000 / auth / google。 希望谷歌认证页面显示我认证,但我得到下面的错误

XMLHttpRequest无法加载https://accounts.google.com/o/oauth2/v2/auth?response_type=code&redirect_ur...=1000090953925-p7jof0qa284ihknb5sor3i4iatnqarvo.apps.googleusercontent.com。 从“https://accounts.google.com/o/oauth2/v2/auth?response_type=code&redirect_ur...=1000090953925-p7jof0qa284ihknb5sor3i4iatnqarvo.apps.googleusercontent.com”重定向到“https://accounts.google.com/ServiceLogin?被动= 1209600&继续= https://a...sercontent.com%26from_login%3D1%26as%3D60339aeceb428c&oauth=1&sarp=1&scc=1'已被CORS策略阻止:没有'Access-Control-Allow-Origin'标题出现在请求的资源。 因此不允许原产地'null'访问。

我已经在授权JavaScript起源http:// localhost:3000 http:// localhost:4200下的google auth页面中包含了这两个端口的url,并且在我已经包含http:// localhost:3000 / auth /谷歌/回调

下面的代码在节点api服务器中

app.get('/ auth / google',passport.authenticate('google',{scope:['profile','email']})); app.get('/ auth / google / callback',passport.authenticate('google',{successRedirect:'/ profile',failureRedirect:'/ users'}),);

任何帮助赞赏


有两件事:因为后端和前端位于不同的端口上,您需要让后端在响应中包含CORS头“Access-Control-Allow-Origin”。 如果您使用快递,请点击此处:

res.header('Access-Control-Allow-Origin', '*');

另外,只要确保浏览器中的地址始终是http :// localhost而不是file :// localhost


你所要做的就是发送$window.location.href="URL"

希望能帮助到你

链接地址: http://www.djcxy.com/p/83213.html

上一篇: Google Oauth implementation using MEAN stack

下一篇: not getting expected result while using passport in nodejs for authentication