Dlaczego Facebook login modalny nie skłoniło użytkownikom na dostęp do adresu e-mail?

głosy
0

Próbuję zintegrować Facebook przepływ logowania na stronie internetowej, i mam problemy z próby wymuszenia logowania modalne do żądania dostępu do Facebooka adres e-mail użytkownika.

Konkretnie mam wykonując następujący kod z mojego JS:

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

Odpowiedź wraca jako połączony gdy użytkownik pomyślnie loguje się, a ja dostaję identyfikator użytkownika, token dostępu, itp, ale po kliknięciu na link w moim UI, że rozmowy FB.login, modalna, która pojawia się na Facebook robi nie zapyta użytkownika, czy chcą przyznać dostęp do swojego adresu e-mail. Dlaczego?

Na miejscu buduję, muszę dostęp do Facebooka adres e-mail użytkownika. Gdyby miały być zadawane i odmówić dostępu, to jedno, ale modalna, że ​​nie pojawia się nawet z prośbą o dostęp do swojego adresu e-mail, a ja nie rozumiem ich adres e-mail z powrotem w odpowiedzi.

Ponadto, jeśli zrobię późniejsze wywołanie Poniżej emailpozwolenie wraca jako declined:

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

Czy ktoś wie dlaczego nie mogę poprosi użytkownika o dostęp do adresu e-mail? Dzięki.

Utwórz 13/02/2020 o 22:03
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

jeszcze raz dzięki misorude na odpowiedź. Bez tego bym nigdy nie zorientowali to. Podsumowując wszystko do góry, problemem było to, że podczas testowania, ja widocznie już raz odrzucił prośbę, aby zapewnić dostęp do mojego adresu e-mail, a potem, to już nie poprosił mnie o zgodę na dostęp do niego.

Jako takie, trzeba zdać dodatkowy parametr, aby FB.loginw celu zmuszenia go, aby ponownie poprosić użytkownika o dostępie do swojego adresu e-mail. W szczególności, jest to authTypeparametr, a oto jak przekazać go:

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

To da Ci dostęp do adresu e-mail (przy założeniu, że użytkownik ma jeden zarejestrowany; ponownie, dzięki misorude dla zauważając, że), ale faktycznie nie zwróci adres e-mail. Aby dostać się, że wtedy trzeba wysłać żądanie do API /meza pomocą fieldsparametru żądającego adresu e-mail, aby ją. I zorientowali się, jak uzyskać to poprzez następującą SO odpowiedź: https://stackoverflow.com/a/31763373/1992973

Konkretnie, pełne rozwiązanie jest coś takiego jak poniżej:

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'
});
Odpowiedział 14/02/2020 o 14:45
źródło użytkownik

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