2012-10-19 3 views
0

Open Graph API를 사용하여 내 사용자의 친구 ID 배열을 가져옵니다.Facebook Open Graph Friend Array 결과가 제한적입니다.

$friends = $facebook->api('/me/friends?limit=2000'); 
$friendsList = array(); 
      foreach ($friends as $key=>$value) 
      { 
       foreach ($value as $fkey=>$fvalue) { 

        $friendsList[] = $fvalue[id]; 
       } 

      } 

내가 가진 문제는 한계에 넣어 상관없이, 나는 단지 500 개 이상의 친구가 사용자를 위해 500 친구 ID 값의 최대를받을 수 있습니다. 나는 운이없는 페이스 북 개발자 정보에서 한계와 페이지 매김을 읽고 있었다.

모든 사용자의 친구 ID를 검색하기 위해해야 ​​할 일에 대한 아이디어가 있습니까? 왜 배열의 마지막 값이 "h"로 표시됩니까? 다른 모든 값은 id입니다.

고맙습니다.

+0

응답에서 페이지 매김 링크를 수행하면 어떻게됩니까? '/ me/friends? limit-500 & offset = 500'을 호출 할 때 어떤 문제가 발생합니까? – Igy

+0

나는 그것을 시도하고 Array ([0] => h) – user1669232

답변

3

왜 배열의 마지막 값이 "h"로 표시됩니까?

루프를 반복하고 있기 때문에.

바깥 쪽 루프에서는 실제 API 응답의 두 속성 인 datapaging을 반복합니다.

그리고 내부 루프에서 이러한 속성이 가리키는 각 배열을 살펴 봅니다. 이름과 ID의 형태로 많은 결과가 있습니다. 다음 두 번째 내부 루프는 그 paging 속성 포인트 배열을 통과, 당신은 인덱스 기반 액세스를 시도하기 때문에 즉, https://graph.facebook.com/…

이제 이름/next 키와 값을 갖는 하나의 속성이 있습니다 첫 번째 값은 $fvalue[id]이고 $fvalue은 실제로 텍스트 리터럴 https://graph.facebook.com/…을 포함하고 있으므로 id이라는 지정어가 선언되어 있지 않으므로 PHP는 먼저 "id"이 멘션 인 것으로 해석하고이 문자열 값을 인덱스 기반 액세스의 정수 0으로 변환합니다. $fvalue. 그리고 당신은 얻을 - PHP는 변수 인덱스를 기반 문자열의 바이트 액세스 (하지 문자) 수 있기 때문에 - 첫 번째 바이트, 누구의 ASCII 표현 문자 h이를 ...


을 그럼, 당신 을 수행하려면 루프를 실제로 한 번만 수행하면되지만 직접적으로 $friends['data']의 내용을 초과하면됩니다.

+0

빠른 응답을 주셔서 감사합니다, 나는이 웹 사이트를 참조 할 수 없으면 어떻게 될지 모르겠다. 여기에 "h"문제를 없애기 위해 한 일이 있습니다 ..... 나는 여전히 나의 한계가 5000으로 설정된 500 개의 ID로 제한됩니다. $ frindslist2 = array(); \t \t \t foreach ($ friends [ 'data'] as $ friend) { $ friendslist2 [] = $ friend [ 'id']; } 그런 다음 결과를 나열하려면 쉼표로 배열을 함축하십시오. – user1669232

1

방금 ​​facebook id가 필요하다면 id 필드로 시도해야하며 모든 친구 id를 반환해야합니다. 이걸로 내 앱이 1500 명의 친구를 가진 사용자를 처리 한 것을 기억합니다.

$friends = $facebook->api('/me/friends?fields=id');