从passportjs中的OAuth回调中获取状态参数

时间:2015-04-09 09:12:01

标签: node.js oauth oauth-2.0 passport.js

我正在尝试将状态参数发送到Oauth,然后在回调中捕获它们,但我无法使它工作。那么passportjs支持这样的功能吗?

我的想法是将一个id作为状态参数发送到Oauth然后在回调上,这取决于发送回我的app的状态参数的id我想做一个正确的重定向。

在Twitter策略中,我启用了

passReqToCallback: true,
state: true

我的请求应如下所示:

app.get('/auth/twitter/:gameId/:url',
    function(req, res){
        try {
            var json = JSON.stringify({gameId: req.params.gameId, url: req.params.url});
            var encodedValues = base64url(json);
            console.log('encodedValues:'+encodedValues)
            passport.authenticate('twitter', {state:encodedValues})
        }catch (e){
            console.log(e);
        }
    }
);  

然后回调

app.get('/auth/twitter/callback', passport.authenticate('twitter', function(req, res, next) {
try{
    //get the state params from the res uri/body
    //decode the state params
    //redirect depending on the state.gameId
}catch(e){
    console.log('twitter exception:'+e);
}}));

我已经知道我可以在会话中保存id,但是我想通过从url传递此信息来确定是否存在会话更少的方法,因为它不敏感。

由于

0 个答案:

没有答案