【问题标题】:Passport.js append custom parameter to authorizationURL-callPassport.js 将自定义参数附加到 authorizationURL-call
【发布时间】:2015-09-30 06:24:17
【问题描述】:

有没有办法将自定义参数附加到 passport.js Oauth2 调用?

对 URL 构建的调用如下:

authorizationURL?response_type=code&redirect_uri=callbackURL&scope=scope&client_id=clientID

有没有办法改变这个 URL 并附加“&myparameter=myvalue”

所以希望的结果是 authorizationURL?response_type=code&redirect_uri=callbackURL&scope=scope&client_id=clientID&myparameter=myvalue

(所有粗体参数在下面指定:)


长篇大论:

如下定义策略(例如亚马逊策略):

passport.use(new AmazonStrategy({
            clientID: config.amazon.clientID,
            clientSecret: config.amazon.clientSecret,
            callbackURL: config.amazon.callbackURL,
            passReqToCallback: true,
            authorizationURL: 'https://eu.account.amazon.com/ap/oa?',
            tokenURL: 'https://api.sandbox.amazon.de/auth/o2/token'
        }

请求

app.get('/oauth/amazon', passport.authenticate('amazon', {
        failureRedirect: '/login',
        scope: ['profile postal_code']
    }));

类似请求的回调!

实际问题:

如何附加“&myparameter=myvalue”

【问题讨论】:

  • 尝试将其直接附加到 url,例如 callbackURL: config.amazon.callbackURL + '?myparameter=myvalue'
  • 是的,我这样做了。您需要指定 authorizationURL: config.amazon.callbackURL + "?myparameter=myvalue&response_type=code& 否则您最终会得到两个 ? 并且 URL 被错误解释。这将添加未使用的参数?response_type。所以我想知道是否有一种“适当的方式”来做到这一点

标签: javascript node.js express passport.js


【解决方案1】:

是的,您可以添加参数。只需将您的 AmazaonStrategy 参数更改为:

// Your code
let convertUrl = (url,params) =>{
  let paramsConverted = "";
let i = 0;
  params.forEach(e => { paramsConverted += i === (params.length - 1) ? `${e[0]}=${e[1]}` : `${e[0]}=${e[1]}&`; i++})
  return `${url}${paramsConverted}`
}
passport.use(new AmazonStrategy({
     clientID: config.amazon.clientID,
     clientSecret: config.amazon.clientSecret,
     callbackURL: config.amazon.callbackURL,
     passReqToCallback: true,
     authorizationURL: 'https://eu.account.amazon.com/ap/oa?',
     tokenURL: 'https://api.sandbox.amazon.de/auth/o2/token'
}
//Your code

只需将您的对象转换为参数 我写了这个简单的函数,让它更容易:)

这段代码有什么作用?
这个功能很简单:D 只需插入您的数组/对象并将其格式化为普通字符串并返回 url + 转换后的参数

也许这个帮助:)

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 2012-09-05
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    相关资源
    最近更新 更多