Express.js OAuth:“ invalid_request:“ redirect_uri”参数与应用程序的有效网址不匹配”

问题描述

我正在使用passport-asana将一些凭据传递给Oasa服务器(位于asana.com)。

我进入范围授予页面,并登录该服务。

但是在回调步骤中,我在浏览器窗口中看到了这一点:

/*
invalid_request: The `redirect_uri` parameter does not match a valid url for the application.
*/

这是我传递OAuth凭据的方式,以及初始和回调OAuth步骤的路由处理程序:

const callbackURL: string = `${process.env.DOMAIN}/oauth/callback`;

const asanaStrategy = new asanaStrategy({
  clientID: process.env.asana_CLIENT_ID,clientSecret: process.env.asana_CLIENT_SECRET,callbackURL,},(asanaAccesstoken: any,asanaRefreshToken: any,asanaProfile: any,doneCallback: Function) => {
  findAndPassUserToSerializer(asanaProfile.id,doneCallback);
});

passport.use(asanaStrategy);


// router file,exporting passport object above
router.get(
  '/oauth',passportWithasanaStrategy.authenticate('asana'),(req: Request,res: Response) => { /* IGnorED */ },);

router.get(
  '/oauth/callback',passportWithasanaStrategy.authenticate('asana',{ failureRedirect: '/login' },res: Response) => {
    // Successful authentication,redirect home.
      res.redirect('/');
    }),);

也尝试过

encodeURI编码第一行:

const callbackURL: string = encodeURI(`${process.env.DOMAIN}/oauth/callback`);

错误是相同的。

关于如何解决此问题的其他想法?

解决方法

错误似乎表明传递的重定向URL与应用程序设置中注册的URL不匹配。

我建议导航到Asana的开发人员控制台,并比较注册的重定向URL,以确保它们与最终值${process.env.DOMAIN}/oauth/callback相匹配。

有关请求参数的文档:https://developers.asana.com/docs/oauth#user-authorization-endpoint