Электронные письма Facebook всегда возвращают null через FQL и RestFB

Я пытаюсь преобразовать страницы друзей в фан-страницы (большинство предприятий создали страницы друзей по ошибке) и пытаюсь отправить электронное письмо всем в списке друзей о переезде.

я пробовал

  1. FQL «ВЫБЕРИТЕ адрес электронной почты ОТ пользователя, ГДЕ uid = xxxx»
  2. Создание групп (не подходит для 5000 страниц друзей)
  3. Restfb: Connection myFriends = facebookClient.fetchConnection("я/друзья", User.class) и т.д.;

Методы FQL и RestFB возвращают nada, метод групповой электронной почты просто беспорядочный.

Является ли это функцией безопасности или эти данные когда-либо могут быть возвращены для моей цели?

Ваше здоровье


person mabeloo52    schedule 14.05.2010    source источник
comment
Сумасшедший вопрос, но дает ли каждый из этих профилей явный доступ приложениям к адресу электронной почты? Новые правила Facebook вынуждают друзей соглашаться на предоставление приложениям доступа к их адресам электронной почты.   -  person Francis Pelland    schedule 27.08.2011


Ответы (4)


для доступа к личной информации пользователя, такой как электронная почта, сообщения и т. д., у вас должно быть разрешение на доступ к этим данным. Для получения более подробной информации посетите https://developers.facebook.com/docs/reference/api/permissions/

person Soojoo    schedule 18.01.2012

Если вы используете restfb (Facebook graph API и старый клиент REST API, написанный на Java) и хотите чтобы получить доступ ко всему списку друзей после аутентификации Oauth, вы можете использовать следующий метод для доступа к список друзей и идентификатор facebook,

public List<ArrayList> findFacebookFriendsUsingRest(String facebookAccessToken){

    List<ArrayList> myFacebookFriendList= new ArrayList();
    final FacebookClient facebookClient;
    facebookClient = new DefaultFacebookClient(facebookAccessToken);
    User user = facebookClient.fetchObject("me", User.class);
    String userName = user.getFirstName();

    if (userName == null){
        userName = user.getLastName();
    }

    String userEmail = user.getEmail();
    com.restfb.Connection<User> myFriends = facebookClient.fetchConnection("me/friends", User.class);

    System.out.println("Count of my friends: " + myFriends.getData().size());

    for(User friend: myFriends.getData()){
        System.out.println("Friends id and name: "+friend.getId()+" , "+friend.getName());      
        myFacebookFriendList.add(friend.getName());
    }

    System.out.println("All Friends : "+myFacebookFriendList);
}
person Youdhveer    schedule 13.12.2011

Facebook не предоставляет пользователя, если только пользователь не авторизует ваше приложение для доступа к нему. Это из-за безопасности и конфиденциальности пользователей, представьте, как ужасно было бы, если бы каждый мог иметь в своем распоряжении все адреса электронной почты пользователей FB.

person falomir    schedule 14.05.2010
comment
Но поскольку они считаются друзьями с обеих сторон, я могу видеть их адреса электронной почты на сайте. Просто кажется странным, что я могу сделать это вручную, но не через апи. - person mabeloo52; 14.05.2010
comment
спасибо, но я думаю, что это относится к приложениям. Я просто использую токен доступа, сгенерированный моим профилем. Я могу вернуть список друзей и их уникальные идентификаторы, проблема в том, что все остальное пусто. Пример: User[about=null Birthday=null Education=[] email=null firstName=null id=12345678 интересующийся=[] lastName=null link=null metadata=null name=Tom Jones picture=null RelationsStatus=null Religion=null timezone =null type=null updatedTime=null Verified=null Website=null work=[]] - person mabeloo52; 14.05.2010
comment
Хорошо, что я сделал, так это получил уникальные идентификаторы, а затем использовал их в FQL для получения соответствующей информации, например, предполагая, что у вас есть в переменной $IDS все уникальные идентификаторы, склеенные вместе, разделенные запятыми 'SELECT uid, first_name, last_name, hometown_location, pic_square, деятельность, интересы, work_history ОТ пользователя WHERE uid IN (' . $IDS . ') ORDER BY last_name'; - person falomir; 15.05.2010
comment
Все тот же строковый запрос = SELECT uid, first_name, last_name, hometown_location, pic_square, Activity, Interests, work_history, email FROM user WHERE uid= + currentUser.getId(); List‹User› users = facebookClient.executeQuery(query, User.class); Это то, что я запускаю, но получаю множество нулей. Обновлю, если что всплывет. Спасибо - person mabeloo52; 15.05.2010

Connection<User> myFriends = facebookClient.fetchConnection("me/friends", User.class ,Parameter.with("fields", "id, name, picture, email"));

Вы можете указать любое из свойств, перечисленных в разделе http://developers.facebook.com/docs/reference/api/user

Единственное, что FB не возвращает почту друзей. Я использую restFb 1.5.3.

person Paul Pinguin    schedule 05.10.2010
comment
Да, похоже, что электронная почта просто недоступна через API. Это немного странно, так как несколько компаний очищают сайт, чтобы получить данные, но законный способ не работает. - person mabeloo52; 06.10.2010