2016-08-29 12 views
0

私は、この発見:How to passing data in TwitterStrategy, PassportJS?非常に有用だったのが、私はパスポートの古いバージョンのいずれかを使用したり表現し、またはその両方だと思う:TwitterStrategy、PassportJSでデータを渡すには?

私は以下のコードが、passport.authenticate(「さえずり」)のdoesnでエラーを取得していません呼び出されるようです。私はTwitterStrategyが動作しているので、それはそうじゃないと思うかもしれません。なぜなら、おそらく私はres.send()をどこかで実行してajaxリクエストが成功する必要があると思いますか?どんな助けもありがとう!前もって感謝します!

var states={}; 

router.get('/auth/twitter', function(req, res, next){ 

    var reqId = 'req'+req.sessionID 

    states[reqId] = { 
    turkeyName : req.query.turkeyName, 
    charityName : req.query.charityName, 
    votes : req.query.votes 
    }; 

    req.session.state = reqId 
    next(); 

}, function(req, res, next) { 
    passport.authenticate('twitter'); 
}); 

と、これは、この問題を持っている誰のためので、私はクライアント

var params = { 
    turkeyName: $('#turkeyNameInput').val(), 
    charityName: 'Stand up to Cancer', 
    votes: 1 
    }; 

    var auth = $.ajax({ 
    type: 'GET', 
    url: '/auth/twitter', 
    data: params, 
    dataType: 'text', 
    async: true 
    }); 

    auth.success(function(data){ 
    console.log('$ajax.auth -- success'); 
    console.log(data); 
    }); 

    auth.error(function(err){ 
    console.log('$ajax.auth -- error'); 
    console.log(err); 
    }); 

答えて

0

、[OK]をやっているものです。

私の考え方では、私はクライアントからサーバルートへのリクエストを取得するためにajaxを使用していました...しかし、私のサーバがrelaventパスポートを呼び出した後、Access-Control-Allow-Originエラーが発生しました。

これは、Twitterがajax経由でクライアントからのリクエストをブロックするためです。

window.location.href あなたはアクセス制御 - 許可 - 起源か何か同様の溝のAJAXを取得し、使用している場合ルート:

var states={}; 

router.get('/auth/twitter', function(req, res, next){ 
    var reqId = 'req'+req.sessionID 

    states[reqId] = { 
    turkeyName : req.query.turkeyName, 
    charityName : req.query.charityName, 
    votes : req.query.votes 
    }; 

    req.session.state = reqId 
    next(); 

}, passport.authenticate('twitter'),function(req, res) { 

}); 

コールバック:

router.get("/auth/twitter/callback", 
    passport.authenticate('twitter'), function(req, res) { 

    var reqId = req.session.state; 
    var state = states[reqId] 

    findOrCreate(userInfo.userInfoModel, {userInfo : req.user, turkeyName : state.turkeyName, charityName : state.charityName, votes : state.votes}, function(err, userDataRes){ 
     if(err){ 
     req.session.destroy(); 
     }else{ 
     res.redirect('/list'); 
     } 
    }); 
}); 

クライアント:

var url = '/auth/twitter?' 

    var dataObj = { 
    turkeyName: $('#turkeyNameInput').val(), 
    charityName: 'name of charity', 
    votes: 1 
    }; 

    window.location.href = url + $.param(dataObj);