получение нулевого значения для электронной почты пользователя - restfb

Недавно я начал работать над руководством. процесс входа в facebook. И подписался на этот блог для получения маркера доступа и использования restfb для доступа к информации о пользователе.
Ниже приведен фрагмент кода, как уже упоминалось, — Извлечение отдельных объектов:

FacebookClient facebookClient = new DefaultFacebookClient(ACCESS_TOKEN, APP_SECRET);
User user = facebookClient.fetchObject("me", User.class);

Мне удалось получить имя, имя и фамилию пользователя, но он возвращает null вместо email (user.getEmail();).

Мое приложение facebook имеет разрешения по умолчанию: permissions

Кто-нибудь поможет мне, как я могу получить доступ к электронной почте пользователя?

ОБНОВЛЕНИЕ

Я пытался использовать проводник graph-api, чтобы узнать, что я получаю за email graph-api explorer, и он говорит Field is empty or disallowed by the access token. Что я должен сделать, чтобы исправить это?


person Mohammad Faisal    schedule 11.10.2014    source источник


Ответы (2)


Либо пользователь не указал свой адрес электронной почты, либо вы не запрашиваете разрешение email в области действия.

Убедитесь, что у вас есть email разрешения с запросом к me/permissions

В этом сообщении в блоге упоминается, что email должен быть установлен в файле getLoginRedirectURL. Чтобы убедиться в этом, когда вы проходите диалоговое окно входа в систему, убедитесь, что диалоговое окно входа в Facebook запрашивает разрешение электронной почты.

Это также описано в ручном потоке

https://www.facebook.com/dialog/oauth? client_id={app-id} &redirect_uri={redirect-uri}&scope=email

person phwd    schedule 11.10.2014
comment
как мне запросить разрешение email в области действия? - person Mohammad Faisal; 12.10.2014
comment
Спасибо за ответ. Теперь у меня есть некоторые вопросы... что, если пользователь отредактирует настройки и снимет флажок, чтобы не предоставлять адрес электронной почты? Как я могу получить его электронную почту позже? Можно ли запросить более одной области действия и как? - person Mohammad Faisal; 12.10.2014

Попробуй это

User me = client.fetchObject(yourId, User.class,Parameter.with("fields", "email"));
person nirman11    schedule 21.12.2014
comment
Можете ли вы сказать, как я могу дать больше параметров? - person Amit Kumar; 11.09.2015
comment
Просто укажите все параметры, которые вы хотите, через запятую, например. (поля, электронная почта, имя, фамилия) и т. д. - person Fast Engy; 23.09.2015
comment
Здесь вы можете найти доступные поля: developers.facebook.com/docs/graph- API/ссылка/пользователь - person Gabor Meszaros; 04.09.2016