Perché il Facebook login modale non richiedere agli utenti l'accesso al proprio indirizzo di posta elettronica?

voti
0

Sto cercando di integrare il flusso di login di Facebook in un sito web, e sto avendo problemi con il tentativo di forzare il modal login per richiedere l'accesso a Facebook l'indirizzo e-mail dell'utente.

In particolare, sto eseguendo il seguente codice dalle mie JS:

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

La risposta sta tornando come collegato quando l'utente accede con successo, e io sono sempre ID utente dell'utente, token di accesso, ecc, ma quando si clicca con il tasto nel mio UI che le chiamate FB.login, la modali che si apre per Facebook fa non chiedere all'utente se vuole concedere l'accesso al proprio indirizzo di posta elettronica. Perché?

Per il sito che sto costruendo, ho bisogno di accesso a Facebook l'indirizzo e-mail dell'utente. Se dovessero essere chiesto e negare l'accesso, che è una cosa, ma il modal che si apre non è nemmeno chiedendo loro per l'accesso al proprio indirizzo di posta elettronica, e non ottenere il loro indirizzo di posta elettronica indietro nella risposta.

Inoltre, se faccio una chiamata successiva al seguente, il emailconsenso ritorna come declined:

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

Qualcuno sa il motivo per cui non è possibile richiedere all'utente l'accesso al proprio indirizzo di posta elettronica? Grazie.

È pubblicato 13/02/2020 alle 22:03
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Grazie ancora a misorude per la risposta. Senza questo, non avrei mai capito questo. Per riassumere tutto in su, il problema era che durante i test, avevo apparentemente già una volta rifiutato la richiesta di fornire l'accesso al mio indirizzo e-mail, e dopo che, mi ha chiesto non è più il permesso di accedervi.

Come tale, è necessario passare un parametro in più per FB.loginper costringerlo a ri-chiedere l'utente per l'accesso al proprio indirizzo di posta elettronica. In particolare, è il authTypeparametro, ed ecco come si passa:

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

Che vi darà accesso all'indirizzo di posta elettronica (supponendo che un utente ha un registrato, ancora una volta, grazie a misorude per notare che), ma in realtà non restituisce l'indirizzo e-mail. Per ottenere questo, è quindi necessario inviare una richiesta API per /meun fieldsparametro che richiede l'indirizzo e-mail per ottenerlo. Ho capito come ottenere che tramite la seguente risposta SO: https://stackoverflow.com/a/31763373/1992973

In particolare, una soluzione completa è qualcosa di simile al seguente:

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'
});
Risposto il 14/02/2020 a 14:45
fonte dall'utente

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