De ce este Facebook conectare modal nu a determinat utilizatorii de acces la adresa de e-mail?

voturi
0

Am încercat să integreze fluxul de conectare Facebook într-un site web, iar eu sunt cu probleme cu încercarea de a forța modal de autentificare pentru a solicita accesul la Facebook adresa de e-mail a utilizatorului.

Mai exact, sunt execută următorul cod de la JS meu:

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

Răspunsul se întoarce ca fiind conectat atunci când utilizatorul se conectează cu succes, iar eu sunt obtinerea ID - ul de utilizator al utilizatorului, jeton de acces, etc, dar atunci când fac clic pe butonul din interfața mea că apelurile FB.login, modal care apare pe Facebook face nu cere utilizatorului în cazul în care doresc să acorde acces la adresa de e - mail. De ce?

Pentru site-ul Construiesc, am nevoie de acces la Facebook adresa de e-mail a utilizatorului. Dacă ar fi fost să fie întrebat și de a refuza accesul, asta e un lucru, dar modal care apare nu este chiar le cere accesul la adresa lor de e-mail, iar eu nu primesc adresa de e-mail înapoi în răspunsul.

Mai mult decât atât, dacă am face un apel ulterior ce urmează, emailpermisiunea vine înapoi ca declined:

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

Stie cineva de ce nu pot solicita utilizatorului acces la adresa de e-mail? Mulțumiri.

Întrebat 13/02/2020 la 22:03
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Vă mulțumim din nou pentru a misorude răspunsul. Fără asta, aș fi niciodată dat seama de asta. Pentru a rezuma totul, problema a fost că în timpul testării, am refuzat aparent deja o dată solicitarea de a oferi acces la adresa de e-mail, și după aceea, nu mai mi-a cerut permisiunea de acces la aceasta.

Ca atare, trebuie să treacă un parametru suplimentar pentru a FB.loginpentru ao forța să re-cere utilizatorului pentru acces la adresa de e - mail. Mai exact, este authTypeparametrul, și iată cum o treci:

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

Acest lucru va permite accesul la adresa de e - mail (presupunând că un utilizator are un singur înregistrat, din nou, datorită misorude de remarcat faptul că), dar nu întoarce de fapt , adresa de e - mail. Pentru a obține asta, atunci trebuie să trimită o cerere de API pentru /meun fieldsparametru care solicită adresa de e - mail pentru ao obține. Am dat seama cum să obțineți că prin următorul răspuns SO: https://stackoverflow.com/a/31763373/1992973

Mai exact, o soluție completă este ceva de genul următoarele:

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'
});
Publicat 14/02/2020 la 14:45
sursa de către utilizator

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