Proč je Facebook login modální není dotazování uživatelů pro přístup k jejich e-mailovou adresu?

hlasů
0

Snažím se integrovat Facebook přihlašovací tok do webové stránky, a mám problémy s snaží útočit přihlašovací modální požádají o přístup k Facebooku e-mailovou adresu uživatele.

Konkrétně jsem vykonáním následující kód z mých JS:

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

Reakce se vrací ve spojení, když se uživatel úspěšně přihlásí, a jsem dostat uživatele ID uživatele přístupového prvku, atd, ale po kliknutí na tlačítko v mém UI, že výzvy FB.login, modálního, který se objeví na Facebook dělá není požádat uživatele, pokud chtějí udělit přístup ke své e-mailové adrese. Proč?

Pro danou lokalitu Stavím, potřebuji přístup k Facebooku e-mailovou adresu uživatele. Pokud by měly být požádáni a odepřít přístup, to je jedna věc, ale modální, který se objeví, není jim ani s žádostí o přístup k jejich e-mailovou adresu a já nechápu jejich e-mailových adres zpět do reakce.

Kromě toho, když udělám následné volání následujícím textu emailoprávnění se vrátí jako declined:

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

Ví někdo, proč nemohu vyzvat uživatele pro přístup k jejich e-mailovou adresu? Dík.

Položena 14/02/2020 v 00:03
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

opět díky misorude za odpověď. Bez toho bych se nikdy na to přišel. Chcete-li součet všechno nahoru, problém byl, že během testování jsem zřejmě již jednou odmítl požadavek na poskytnutí přístupu k mé e-mailové adresy, a poté je to už mě požádal o povolení vstoupit do ní.

Jako takový, budete muset projít další parametr se FB.login, aby ji přinutit, aby znovu požádá uživatele o přístup k jejich e-mailovou adresu. Konkrétně se jedná o authTypeparametr, a tady je návod, jak si to projít:

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

Které vám umožní přístup k e-mailové adresy (za předpokladu, že uživatel má jeden registrovaný, opět díky misorude za zmínku, že), ale to není ve skutečnosti vrátit e-mailovou adresu. Chcete-li získat to, že jste pak musel poslat žádost o API /mes fieldsparametrem žádá o e-mailovou adresu, aby si to. Přišel jsem na to, jak se dostat, že prostřednictvím následujícího SO odpověď: https://stackoverflow.com/a/31763373/1992973

Konkrétně plné řešení je něco jako následující:

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'
});
Odpovězeno 14/02/2020 v 16:45
zdroj uživatelem

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