2014-06-04 5 views
8

Я разрабатываю свое первое Android-приложение с использованием Parse и Facebook, поэтому я довольно новичок в этом.Android FaceBook newMyFriendsRequest Возвращает EMPTY Список друзей

Я пытаюсь получить список друзей пользователя с Request.newMyFriendsRequest(), но он дает мне пустой список при тестировании с реальными пользователями.

Насколько я знаю, с Graph API v2.0 этот запрос вернет только набор друзей человека, которые также используют приложение.

Для этой цели я создал фальшивый профиль Fb, я стал другом с ним в Facebook с моим реальным профилем установлен мое приложение, зарегистрированный с ParseUser и Linked с Facebook, используя ParseFacebookUtils.link с обеими профилями, но запрос возвращает пустые список друзей.

Я создал несколько тестовых пользователей в панели инструментов приложения Facebook и смоделировал несколько дружеских связей между ними. Я сделал тот же процесс в своем приложении (зарегистрируйтесь с parseUser, ссылка с ParseFacebookUtils.link) с двумя из них, а в списке users.size()возвращается 2 друзей, как и ожидалось.

Почему это не работает с моим фактическим профилем и поддельным (что похоже на любой другой реальный)?

Это, как я, связывающие профили:

List<String> permissions = new ArrayList<String>(); 
permissions.add("public_profile"); 
permissions.add("user_friends"); 

ParseFacebookUtils.link(currentUser, permissions, MainActivity.this, new SaveCallback() { 
    @Override 
    public void done(ParseException ex) { 
      if (ParseFacebookUtils.isLinked(currentUser)) { 
      Log.d(TAG, "Woohoo, user logged in with Facebook!"); 
      Toast.makeText(getApplicationContext(), "Facebook succesfully linked", Toast.LENGTH_LONG).show(); 
      } 
      if (ex != null) { 
      Log.d (TAG, ex.getLocalizedMessage() + "\n + Exception Code: " + ex.getCode()); 
      } 
    }); 

И это, как я Запрос друзей:

Request.newMyFriendsRequest(ParseFacebookUtils.getSession(), new GraphUserListCallback() { 
    @Override 
    public void onCompleted(List<GraphUser> users, Response response) { 
     Log.d(TAG, "Request Completed!! " + response.toString() + "----" + users.size()); 
     if (users != null) { 
      List<String> friendsList = new ArrayList<String>(); 
      for (GraphUser user : users) { 
       friendsList.add(user.getId()); 
      } 
     } 
    } 
}).executeAsync();. 

Но я не могу понять, как получить список друзей реального пользователь. С моим профилем он должен вернуть 1 друг, который также зарегистрирован с помощью приложения разрабатывается ...

+2

У обоих пользователей есть разрешение пользователя user_friends на приложение? – WizKid

+1

Вот и все! Я предполагаю, что на этих реальных пользователях я связался с FB, прежде чем добавить запрос разрешения для user_friends в логин. Я отсоединил профиль анализа из Facebook, вышел из системы, но всякий раз, когда я пытаюсь войти в систему и снова ссылку, он не запрашивает у меня разрешения и вместо этого пытается открыть последний сеанс, но он ответил ** Истек срок действия или недействительный маркер **. Кажется, что Parse фактически не отключает пользователя от facebook. Спасибо! – jdev

+0

такой же проблема ... как о решении? – crossle

ответ

1

я получил пустой массив из следующих действий:

- This will only return any friends who have used (via Facebook Login) the app making the request.

Обратите внимание!

+1

Да, это правильно. Но проблема в этом случае была проблемой, освежающей facebook user_friends разрешение на использование приложения При первом входе в систему с этим пользователем у меня не было этого набора разрешений, и когда я это сделал, по какой-то причине разрешения не были предоставлены, и мне пришлось обновить эти разрешения для их запуска работая снова. – jdev

Смежные вопросы