Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 缺少必需参数:使用passport google oauth重定向_uri_Node.js_Express_Google Oauth_Passport Google Oauth - Fatal编程技术网

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登录时,会返回此错误

  • 那是个错误
  • 错误:无效的\u请求

    缺少必需的参数:重定向\u uri

    请求详细信息 范围= 响应类型=代码 重定向\u uri= client_id=xxxx-xxxx.apps.googleusercontent.com

    重定向参数在这里
    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。如果调用来自或重定向到本节中未列出的页面,则身份验证将不起作用

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

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


    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”制作