8

私はpassport.jsを使用していますが、Facebook IDをログインしているユーザーのアカウントにリンクできると、負傷します。このようなもの:

passport.use( new FacebookStrategy({
        consumerKey: ---
        consumerSecret: ---
        callbackURL: "http://mycallback"
    },
    function(token, tokenSecret, profile, done) {
        if (user is logged in)
            user = User.addfacebookId(user, profile.id)
            done(user);
        }
    }   
));
4

1 に答える 1

18

これにアプローチする方法はいくつかありますが、最も簡単な方法の1つは、このオプションを使用することだと思いpassReqToCallbackます。これを有効にするreqと、は検証コールバックの最初の引数になり、そこから存在するかどうかを確認できますreq.user。つまり、ユーザーはすでにログインしています。その時点で、ユーザーをFacebookプロファイルの詳細に関連付けて、同じものを指定できます。完了したコールバックへのユーザーインスタンス。存在しない場合req.userは、通常どおり処理してください。

例えば:

passport.use(new FacebookStrategy({
    clientID: ---
    clientSecret: ---
    callbackURL: "http://mycallback"
    passReqToCallback: true
  },
  function(req, accessToken, refreshToken, profile, done) {
    if (req.user)
      // user is already logged in.  link facebook profile to the user
      done(req.user);
    } else {
      // not logged in.  find or create the user based on facebook profile
    }
  }   
));
于 2012-06-26T18:28:04.990 に答える