Pytanie Facebook zwraca wartość undefined dla wiadomości e-mail i urodzin


Próbuję korzystać z interfejsu API Facebooka, który zapewnia first_name, last_name, gender, email, birthday do rejestracji na mojej stronie. Użyłem Graph API i wygenerowałem token dostępu z niezbędnym zakresem. Próbowałem na moim koncie osobistym, w którym utworzyłem aplikację i poprawnie zwróciło pola, ale dla konta testowego i konta znajomego zwraca on e-mail i urodziny jako "niezdefiniowane". W graph.facebook.com pokazuje następujący błąd dla konta znajomego.

enter image description here

Facebook zwraca identyfikator e-mail mojego znajomego na koncie doulingo.

Czy ustawiam niepoprawne uprawnienia, czy jest jakiś inny problem?


11
2018-03-08 07:07


pochodzenie




Odpowiedzi:


Problem z moim kodem wynikał tylko z tego, że nie używałem access_token. Użyłem access_token do pobrania wszystkich, first_name, last_name, gender, birthday, email.

function authUser() {
            FB.login(checkLoginStatus, {scope:'email, user_likes'});
            function checkLoginStatus(response) {
                if(!response || response.status !== 'connected') {
                    alert('User is not authorized');
                    document.getElementById('loginButton').style.display = 'block';
                } else {
                    alert('User is authorized');
                    document.getElementById('loginButton').style.display = 'none';
                    console.log('Access Token: ' + response.authResponse.accessToken);

                    //This has to be in your callback!
                    var uid = response.authResponse.userID;
                    var accessToken = response.authResponse.accessToken;
                // access token is very important to get some fields like email, birthday

                    getData();
                }
            }
        }


    function getData() {
        console.log('Welcome!  Fetching your information.... ');
        FB.api('/me', function(response) {
            console.log('Good to see you, ' + response.name + '.' + response.id);
        });
    };

8
2018-03-22 16:02





sprawdź moją odpowiedź tutaj aby zobaczyć, że jest to dobrze znany problem, ale nie błąd dla programistów Facebooka.

Edycja ... Tak mówią na stronie twórców Facebooka:

"... Dokumentacja dla pola" e-mail "obiektu" użytkownika "(    https://developers.facebook.com/docs/reference/api/user/ ) wyjaśnia   oczekiwane zachowanie tutaj, które jest: "to pole nie będzie   zwracane, jeśli nie jest dostępny poprawny adres e-mail ".

Istnieje pewna liczba   okoliczności, w których możesz myśleć, że użytkownik powinien mieć e-mail   adres został zwrócony, ale nie będzie. Ze względu na prywatność i bezpieczeństwo   nie jest możliwe dokładne sprecyzowanie konkretnego powodu   adres e-mail użytkownika nie zostanie zwrócony, więc nie pytaj. Trochę   możliwe przyczyny:

Brak adresu e-mail na koncie; Brak potwierdzonego adresu e-mail   adres na koncie; Brak zweryfikowanego adresu e-mail na koncie; Użytkownik wprowadził   punkt kontrolny bezpieczeństwa, który wymagał od nich potwierdzenia adresu e-mail   adres i jeszcze tego nie zrobili; Adres e-mail użytkownika   nieosiągalny.

Potrzebujesz także uprawnienia rozszerzonego "e-mail", nawet dla   użytkowników, którzy mają ważny, potwierdzony, osiągalny adres e-mail w pliku ... "


1
2018-05-26 14:00



Witaj Hugo, dobrym pomysłem może być skopiowanie i wklejenie najważniejszych części odpowiedzi, a także udostępnienie linku, aby użytkownicy mogli szybko uzyskać rozwiązanie bez konieczności przechodzenia na inną stronę. - Vality
edytowane, gotowe! ;) - Hugo


Kliknij przycisk "Uzyskaj token dostępu" i wybierz potrzebne uprawnienia. Regeneruje token dostępu i pocztę e-mail, a inne wartości będą dostępne.

Uwaga:

  • Aby uzyskać dostęp do urodzin bieżącego użytkownika, potrzebujesz uprawnienia "user_birthday"
  • Aby uzyskać dostęp do urodzin znajomych, musisz mieć uprawnienie "friends_birthday"
  • Za darmo nie możesz uzyskać dostępu do e-maili znajomych.
  • W ustawieniach konta użytkownik musi ustawić swój adres e-mail jako "Główny", aby uzyskać do niego dostęp, w przeciwnym razie zwróci wartość null.

Widzieć to i to wątki, aby uzyskać więcej szczegółów.


0
2018-03-09 19:11



Dzięki za odpowiedź, pomogło mi to w zrozumieniu pewnych rzeczy, takich jak Twoja ostatnia wiadomość "Podstawowa". Ale wszystko, co robiłem źle, nie było używane access_token W kodzie. Użyłem go i problem został rozwiązany. Spójrz na moją odpowiedź :) - Pranav Karnik