2017-08-23 3 views
0

lire beaucoup de choses sur le thème, mais ne peut pas trouver une belle façon de lier un compte de stratégie locale existante avec un compte de stratégie facebook.Quelle manière correcte de lier le profil de facebook au compte existant si j'utilise jwt auth?

Le problème est que j'ai l'autorisation JWT, donc si l'utilisateur clique sur le bouton "Connect FB account", il redirige vers facebook, plutôt que vers le serveur sans JWT. Est-il possible d'envoyer une requête FB avec une identité d'utilisateur, qui me revient dans l'URL de rappel?

Quelle manière correcte de lier le compte FB à l'utilisateur actuellement connecté?

UPD a trouvé un moyen d'envoyer la demande/get rappel avec le paramètre:

const facebook = new FacebookStrategy.Strategy({ 
    ...facebookConfigAndScopes, 
    passReqToCallback: true 
    }, 
    (req, accessToken, refreshToken, profile, done) => {console.log(req.params.id);} 
); 

userRouter.route('/auth/facebook/:id') 
.get((req, res, next) => passport.authenticate('facebook', { 
    scope: ['public_profile'], 
    callbackURL: '/api/user/auth/facebook/callback/'+req.params.id 
    })(req, res, next) 
); 

userRouter.route('/auth/facebook/callback/:id') 
.get(
    (req, res, next) => passport.authenticate('facebook', { callbackURL: '/api/user/auth/facebook/callback/'+req.params.id })(req, res, next), 
); 

je peux envoyer hachage utilisateur pour identifier l'utilisateur existant.

Répondre

0

Utilisez le paramètre state pour transmettre le jeton à Facebook. Facebook ajoutera les données au paramètre state lors de l'appel de l'URL de rappel.

Plus d'infos ici: https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#logindialog

+0

Cest pas un problème pour obtenir le profil de l'utilisateur de facebook. Le problème est de lier le compte d'utilisateur existant avec l'utilisateur de facebook après la redirection au rappel. Je n'ai aucun utilisateur dans la session de serveur. –

+0

Facebook vous donne l'adresse e-mail de l'utilisateur. Vous n'avez pas besoin d'un utilisateur en session pour savoir de quel utilisateur il s'agissait. Il suffit de vérifier son adresse e-mail et correspond à votre base de données. C'est l'utilisateur! – tbking

+0

L'utilisateur peut avoir différents e-mails; Par exemple, l'utilisateur s'inscrire avec [email protected], puis de sa page de compte, il bouton "Connect to FB", et api obtenir une réponse de FB avec [email protected] Et API créer un nouvel utilisateur, ce qui est surprenant. –