(私はすでにfbStrategy.passReqToCallback = true
を実行しています) https://scotch.io/tutorials/easy-node-authentication-linking-all-accounts-togetherをオフにしていますが、このソーシャル認証サービスを複数のアプリケーション、たとえば、暖房システムを制御するもの、passport.authenticateに追加のパラメータを渡す方法
基本的に、これらのアプリケーションの1つがサーバーとチェックし、正しいトークンを持っていない場合、このソーシャル認証サービス(social-auth)にリダイレクトされます。ユーザーは、ソーシャルログインボタンの上を押すと、それはそのから到着アプリ何のパラメータをつかみ、req,res,next
の/auth/facebook/:appid
// send to facebook to do the authentication
app.get('/auth/facebook/:appId', function(req,res,next){
passport.authenticate(
'facebook', { scope : 'email' }
)(req,res,next);
});
req
がシリアライズさユーザレコードであるため、それをパラメータとして追加します。この時点で、ソーシャル認証はユーザーが誰であるかを知らない。
fbStrategy.passReqToCallback = true;
passport.use(new FacebookStrategy(fbStrategy,
function(req, token, refreshToken, profile, done) {
var email = (profile.emails[0].value || '').toLowerCase()
process.nextTick(function() {...
認証が完了すると、私は、呼び出し元のアプリにリダイレクトしたいと私は戻って右のサイトに行くことができるように一緒に乗る:appId
のparamを必要としています。
さまざまな社会的状態にアクセスできるcurrentAppId
などの変数を作成したばかりですが、同時に複数のユーザーが同時に認証された場合は、間違ったアプリにユーザーが戻ってくる可能性があります。他のユーザーのアプリ。そのため、passport.authenticate
にパラメータとして移動するにはappId
が必要です。どのように私はどのように把握する必要がありますか? passport.authenticate
をラップするか、それとも別のものを修正できますか?
すごくおかげさまです。私はあなたの最後の提案を '現在の要求の明示ミドルウェアソケット'のような検索で把握しようとしましたが、本当に何も見つかりませんでした。 が来る;任意の参照は、 – mcktimo
実際にそれが passport.use(新しいFacebookStrategy(fbStrategy、 機能(reqは、トークン、refreshToken、プロファイル、行わ){ はconsole.log(req._toParam)が動作しませんでしたがいただければ幸いです app.get( '/ auth/facebook /:appId'、function(req、res、next)){ req._toParam = req.params.appId console.logここで定義されていても、 (req._toParam) 間違ったログを読んでいました – mcktimo
すべてのソーシャル認証戦略について、reqはreq.user – mcktimo