Pourquoi le modal de connexion Facebook non sans demander aux utilisateurs d'accéder à leur adresse e-mail?

voix
0

Je suis en train d'intégrer le flux de connexion Facebook dans un site Web, et je vais avoir des problèmes en essayant de forcer le modal de connexion pour demander l'accès à l'adresse e-mail Facebook de l'utilisateur.

Plus précisément, j'exécutant le code suivant de mes JS:

FB.login((response) => {
    if (response.status === 'connected' &&
        response.authResponse) {
        // Do something with the response here.
    }
}, {
    scope: 'email',
    return_scopes: true
});

La réponse revient comme connecté lorsque l'utilisateur se connecte avec succès, et j'obtiens l'ID utilisateur de l'utilisateur, un jeton d'accès, etc., mais quand ils cliquent sur le bouton dans mon interface utilisateur que les appels FB.login, les modes de transport qui apparaît pour Facebook ne pas demander à l'utilisateur si elles veulent accorder l' accès à leur adresse e - mail. Pourquoi?

Pour le site je construis, je besoin d'avoir accès à l'adresse e-mail Facebook de l'utilisateur. Si elles devaient être posées et refuser l'accès, c'est une chose, mais le modal qui apparaît est même pas leur demander l'accès à leur adresse e-mail, et je ne suis pas le dos d'adresse e-mail dans la réponse.

De plus, si je fais un appel ultérieur à ce qui suit, l' emailautorisation revient comme declined:

FB.api(`/${response.authResponse.userID}/permissions`, (response) => {
    console.log(response);
});

Est-ce que quelqu'un sait pourquoi je ne peux pas demander à l'utilisateur d'accéder à leur adresse e-mail? Merci.

Créé 14/02/2020 à 00:03
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Merci encore à misorude pour la réponse. Sans cela, je n'aurais jamais compris cela. Pour résumer le tout, le problème était que pendant le test, je l'avais apparemment déjà une fois refusé la demande de fournir un accès à mon adresse e-mail, et après cela, il ne m'a demandé l'autorisation d'y accéder.

En tant que tel, vous devez passer un paramètre supplémentaire à FB.loginafin de le forcer à nouveau demander à l'utilisateur d'accéder à leur adresse e - mail. Plus précisément, il est le authTypeparamètre, et voici comment vous passez:

FB.login((response) => {
    if (response.status === 'connected' &&
        response.authResponse) {
        // Do something with the response here.
    }
}, {
    scope: 'email',
    authType: 'rerequest'
});

Cela vous donnera accès à l'adresse e - mail ( en supposant un utilisateur enregistré un, de nouveau, grâce à misorude pour noter que), mais il ne retourne pas vraiment l'adresse e - mail. Pour obtenir cela, vous devez alors envoyer une demande d'API /meavec un fieldsparamètre demandant l'adresse e - mail pour l' obtenir. Je me suis dit comment obtenir que par la réponse SO suivante: https://stackoverflow.com/a/31763373/1992973

Plus précisément, une solution complète est quelque chose comme ce qui suit:

FB.login((response) => {
    if (response.status === 'connected' &&
        response.authResponse) {
        FB.api('/me?fields=email', (response) => {
            // The email should be in the response, assuming the user has one registered with FB.
        });
    }
}, {
    scope: 'email',
    authType: 'rerequest'
});
Créé 14/02/2020 à 16:45
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more