问题描述
我正在使用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