11

使用passport-google-oauth:“0.2.0”在我的MEAN Stack应用程序中(可在此处找到:https://github.com/jaredhanson/passport-google-oauth). 当我运行应用程序并尝试使用Google API登录时,返回此错误

  1. 这是个错误。

错误:invalid_request

缺少必需的参数:redirect_uri

请求详细信息范围=https://www.googleapis.com/auth/plus.loginresponse_type=代码重定向uri=client_id=xxxx-xxxx.apps.googleusercontent.com

重定向参数在这里密码输入.js

var GoogleStrategy=require('passport-google-oauth')。OAuth2策略;

var GOOGLE_CLIENT_ID=“xxx-xxx.apps.googleusercontent.com”;var GOOGLE_CLIENT_SECRET=“xxxx”;

passport.use(新谷歌战略({
客户端ID:GOOGLE_CLIENT_ID,
客户端密码:GOOGLE_CLIENT_SECRET,
回调Url:“http://127.0.0.1:3000/auth/google/oauth2callback网站" },函数(accessToken、refreshToken和profile,done){完成(空,配置文件);});

路线在这里authenticate.js认证.js

router.get('/google',passport.authenticate('google',{范围:['https://www.googleapis.com/auth/plus.login']}), 函数(req,res){});

router.get('/google/oauth2callback',passport.authenticate('google'{successRedirect:“/auth/success”,failureRedirect:“/auth/failure”}),函数(req,res){res.redirect('/');});

我确信我遗漏了一些简单的东西,但我不知道该在这个问题中添加什么,以便为您提供最佳信息。请提问,我会尽力回答你。这是相关数据。

有趣的是,如果我手动添加callbackUrl,那么一切都很好。我可以很好地访问谷歌API。然后我可以选择“允许”或“拒绝”请求。

1

5个答案5

重置为默认值
24

定义GoogleStrategy时,JSON键应该是callbackURL,而不是callbackURL(即大写URL)。也有这个“问题”;-)

2
  • 谢谢您!奏效了。我知道我错过了什么。我从未想过这是一件如此简单的事情。 评论 2015年10月8日11:20
  • 1
    对我来说,我有callBackURL,正如你说的“callBackURL” 评论 2017年10月5日2:21
1

我有一个使用相同策略的工作示例。由于我没有收到此错误,无法确定问题是什么,但我建议您检查以下内容:

  • 添加到您的谷歌战略创建(新的谷歌战略({…}))范围:

    范围:'https://www.googleapis.com/auth/userinfo.email',

  • 确保您的google api在开发api控制台具体而言:

    1. 在API和auth|Credentials|OAuth同意屏幕下-所有必需的url。
    2. 在api和auth|Credentials下,查找您的web api客户端并查看您是否授权了所有相关URI。如果调用来自或重定向到本节中未列出的页面,则auth将不起作用。
2
  • 这没用。谢谢你的建议,但我仍然得到一个空的redirect_uri字段。我假设我的服务器代码中有某个地方缺少redirect_uri。错误中的其余代码来自我的代码。我可以手动插入?失踪了?重定向uri,请求继续正常处理。 评论 2015年10月5日11:36
  • 你可以深入研究这个模块。搜索特定的字符串,看看它发生在哪里。所有模块都嵌套在node_modules目录中
    – 迈尔
    评论 2015年10月5日13:11
1

我用类似的东西-1.确保这是URL而不是uri。2.确保您注册的回调URL与您请求的URL相同。


var passport=要求('passport');var GoogleStrategy=require('passport-google-oauth')。OAuth2策略;//使用Passport中的GoogleStrategy。//Passport中的策略需要“验证”功能,该功能接受//凭据(在本例中为accessToken、refreshToken和Google//配置文件),并使用用户对象调用回调。passport.use(新谷歌战略({客户端ID:GOOGLE_CLIENT_ID,客户端密码:GOOGLE_CLIENT_SECRET,回调URL:“http://www.example.com/auth/google/callback"//应该与您在凭据中注册的相同。},函数(accessToken、refreshToken和profile,done){User.findOrCreate({googleId:profile.id},函数(err,User){返回完成(err,user);});}));


附言:我第一次接触stackoverflow。请忽略错误,帮助我改进。

0

我的问题发生在WSL身份验证中。该错误如下所示:

错误问题

要解决此问题,请使用命令gcloud init—仅控制台在您的终端中。

0

我在我的巢穴申请中遇到了这个问题。我通过将CallbackURL从“CallbackURL”更改为“callbakURL”URL all caps解决了这个问题

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.