Node.js 缺少必需参数:使用passport google oauth重定向_uri
在我的平均堆栈应用程序中使用Node.js 缺少必需参数:使用passport google oauth重定向_uri,node.js,express,google-oauth,passport-google-oauth,Node.js,Express,Google Oauth,Passport Google Oauth,在我的平均堆栈应用程序中使用passport谷歌oauth:“0.2.0”(可在此处找到:)。当我运行应用程序并尝试使用Google API登录时,会返回此错误 那是个错误 错误:无效的\u请求 缺少必需的参数:重定向\u uri 请求详细信息 范围= 响应类型=代码 重定向\u uri= client_id=xxxx-xxxx.apps.googleusercontent.com 重定向参数在这里 passport init.js var GoogleStrategy=require('pas
passport谷歌oauth:“0.2.0”
(可在此处找到:)。当我运行应用程序并尝试使用Google API登录时,会返回此错误
passport init.js
var GoogleStrategy=require('passport-google-oauth')。OAuth2Strategy
var GOOGLE_CLIENT_ID=“xxx xxx.apps.googleusercontent.com”;
var GOOGLE_CLIENT_SECRET=“xxxx”
passport.use(新谷歌战略({客户ID:GOOGLE\u客户端\u ID,
clientSecret:GOOGLE\u CLIENT\u SECRET,
callbackUrl:“}, 函数(accessToken、refreshToken、profile、done){ 完成(null,profile);}) 路由在这里
authenticate.js
router.get('/google',passport.authenticate('google',
{作用域:[''']}),
函数(req,res){}
router.get('/google/oauth2callback',passport.authenticate('google'){
successRedirect:'/auth/success',failureRedirect:'/auth/failure'})
,函数(req,res){res.redirect('/');})
我确信我遗漏了一些简单的东西,但我不知道在这个问题中添加什么可以为您提供最好的信息。请提问,我会尽力回答你。这就像是相关的数据
有趣的是,如果我手动添加callbackUrl,那么一切都很好。我可以很好地访问谷歌API。然后我可以选择“允许”或“拒绝”请求。我有一个使用相同策略的工作示例。由于我没有发现此错误,因此无法查明问题所在,但我建议您检查以下各项:
- 在您的谷歌战略创建(新的谷歌战略({…}))中添加以下范围: 范围:“”
- 确保在中正确配置了您的google api。具体而言:
- 在API和auth | Credentials | OAuth同意屏幕下-所有必需的url
- 在api和auth | Credentials下,查找您的web api客户端,查看您是否已授权所有相关URI。如果调用来自或重定向到本节中未列出的页面,则身份验证将不起作用
var passport=require('passport');
var GoogleStrategy=require('passport-google-oauth')。OAuth2Strategy;
//在Passport中使用谷歌策略。
//Passport中的策略需要一个“verify”函数,该函数接受
//凭据(在本例中为accessToken、refreshToken和Google
//配置文件),并使用用户对象调用回调。
passport.use(谷歌新战略)({
clientID:GOOGLE\u客户端\u ID,
clientSecret:GOOGLE\u CLIENT\u SECRET,
回调URL:“http://www.example.com/auth/google/callback"
//应与您在凭据中注册的相同。
},
函数(accessToken、refreshToken、profile、done){
findOrCreate({googleId:profile.id},函数(err,User){
返回完成(错误,用户);
});
}
));代码>那没用。谢谢你的建议,但我仍然得到一个空的重定向uri字段。我假设我的服务器代码中有某个地方缺少重定向uri。错误中的其余代码来自我的代码。我可以手动插入?缺少?重定向uri,请求继续正常处理。您可以深入模块。搜索特定字符串并查看其发生位置。所有模块都嵌套在您的节点\模块目录中。我将放弃这种方法,转而尝试。谢谢!成功了。我知道我错过了什么。我从来没想过事情会这么简单。对我来说,我有callBackURL,必须按照你说的“callBackURL”制作