尝试实施Google OAuth2并使用https://github.com/google/google-api-nodejs-client#authorizing-and-authenticating作为参考。将用户重定向到这样的同意页面时
var url = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: some_scope
});
res.redirect(url);
我在浏览器控制台中遇到此错误(链接已编辑):
XMLHttpRequest无法加载localhost:8080 / myPageName。从localhost:8080 / myPageName重定向到accounts.google.com/o/oauth2/auth?access_type = ...已被CORS策略阻止:请求需要预检,不允许遵循跨源重定向。
奇怪的是,我只有在从GUI执行流程时才会收到此错误(用户按下按钮; angular2前端)。当我将localhost:8080 / myPageName直接放入浏览器地址栏时,一切正常(获得同意书,然后是令牌)。
感谢任何帮助。谢谢。
答案 0 :(得分:1)
我有同样的问题(有一个反应前端,但它是一样的)。 这可能是因为从您使用重定向的服务器,它会触发CORS(即使您从服务器允许它)。
您必须以其他方式将重定向网址返回到您的前端,从前端应用程序捕获它,然后调用您需要调用的URL。
答案 1 :(得分:0)
一个简单的解决方案是创建一个包含所需查询参数的隐藏链接,然后使用JavaScript点击链接,如果谷歌支持HTTP POST提交,则可以使用JavaScript魔法再次创建并直接提交隐藏表单以绕过CORS限制猜测已被删除或将在不久的将来删除。