2015-05-06 2 views
4

Я прошу получить друзей пользователей из приложения Android, которое я разрабатываю. Как из Facebook Api V2.0, я знаю, что я должен получить только друзей пользователя, которые уже вошли в мое приложение. Тем не менее, хотя я знаю, что некоторые друзья пользователя вошли в систему через мое приложение, они не появляются в ответ на запрос в Facebook при запросе друзей этого пользователя. Например, я верну 40 друзей, а не 50+.Facebook Friends Request - Missing Friends

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

Вот код, я использую:

new Request(ParseFacebookUtils.getSession(),"me/friends", null, null, new Request.Callback(){ 

     @Override 
     public void onCompleted(Response response) { 

      if (response == null){ 
       return; 
      } 
      else if (response.getError() != null){ 
       response.getError().getException().printStackTrace(); 
       return; 
      } 

      GraphMultiResult result = response.getGraphObjectAs(GraphMultiResult.class); 

      List<GraphObject> fbInList = result.getData(); 

      if (fbInList != null && !fbInList.isEmpty()){ 

       for (GraphObject user : fbInList) { 

        JSONObject jsonUser = user.getInnerJSONObject(); // The Facebook User 
        System.out.println("name: " + jsonUser.optString("name")); 
       }  
      } 
     } 
    }).executeAsync(); 
+0

Утверждено ли ваше приложение Facebook? Эти люди добавлены в раздел «Тестеры/разработчики» на консоли FB dev? Открыто ли ваше приложение для широкой публики? – Skynet

+0

На самом деле да, они добавляются в качестве тестеров, это проблема? Да. Он открыт для широкой публики, и никаких дополнительных разрешений не используется, поэтому мне не нужен обзор входа. Постскриптум Приложение работает в течение месяца – z3n105

+0

Хорошо, 'Приложение работает в течение нескольких месяцев. Их API изменился с 30 апреля, вы знаете? – Skynet

ответ

4

Я нашел, в чем была проблема. Когда я обновился до последнего SDK для Facebook, Facebook возвращал только 25 друзей. Мне нужно было использовать пейджинг или добавить ограничение на мой запрос друга. На предыдущем SDK мне не нужно было.

Добавление ограничения:

Bundle params = new Bundle(); 
params.putString("limit", "50"); // Up to 5000? 
friendRequest.setParameters(params); 

Соответствующие Stack Overflow Вопросы:

Facebook graph API 'friends' request now only returning 25 friends per page? What's going on?

newMyFriendsRequest Facebook returns only 25 friends

Полезные Facebook Ссылка для пейджинга:

https://developers.facebook.com/docs/graph-api/using-graph-api/v2.2#paging

0

Соответствующая часть doc для вас это

В версии 2.0 в API я смог полный список друзей того, кто вошел в мое приложение, - есть ли способ получить полный список друзей ?

С помощью Graph API версии 2.0 и выше звонки в /me/friends возвращают только друзей, которые также используют ваше приложение. Друзья удовлетворены также user_friends. В тех случаях, когда вы хотите, чтобы люди отмечали своих друзей в рассказах, опубликованных вашим приложением, вы можете использовать API-интерфейс Taggable Friends. Если вы хотите пригласить людей в свое приложение, у нас есть ряд решений, которые зависят от типа приложения, которое вы создали , и платформ, для которых вы построили. Пожалуйста, смотрите наш вопрос о Inviting Friends для получения дополнительной информации.

Так как вместе с друзьями, использующими ваше приложение, они также должны иметь авторизованные user_friends, иначе вы не получите их данные. Вы это сделали?

+0

Да, я зарегистрировался в своем приложении Facebook, и они приняли разрешение user_friends. Я также попросил их удалить приложение из Facebook, а затем повторить его, но это не сработало. – z3n105

+0

Попробуйте сообщить об этом https://developers.facebook.com/bugs/trending/ – Slartibartfast

+0

Пожалуйста, сообщите об ошибке, как упоминалось. Кроме того, каков ваш идентификатор приложения FB? – deesarus