2012-07-04 4 views
-2

내가 실제로이 일을하고 있는지 확실하지 않지만 튜토리얼에서 작은 코드가있어 YouTube에서보고 있었지만 불행히도 파트 2 또는 3을 게시 한 적이없는 사람이 첫 번째 비디오에 쓴 내용 만 남겨 두었습니다. .facebook graph JSON 출력을 변환하는 방법?

내가 사용할 수 있으며, 링크를 통해 그들에게 접근하는 쉬운 방법을 본 모든 PUBLIC 게시물에 액세스하려고했습니다 : https://graph.facebook.com/search?q=i 내 시험 & 유형을 통과 = EN_GB이

가 무엇을 제시 & 로케일을 게시을 방대한 양의 정보가 될 것 같지만 PHP를 사용하여이 명백한 JSON 출력을 어떻게 이해할 수있는 정보로 처리 할 수 ​​있습니까? 나는 그것이 인터넷을 가로 질러 파도를 만들고 유사한 일을하는 것을 보았고 그것을 직접 해보고 싶었다.

이 가능하여 다음과 같은 코드 :

$fbquery = "https://graph.facebook.com/search?q=i hate my boss&type=post"; 
$fb = file_get_contents($fbquery, 'rb'); 
$fbarray = json_decode($fb, true); 
echo $fbarray['message']; 

또는 그 어딘가 잘못된 것입니까? 이용 가능한 공개 정보 및 주소 표시 줄의 링크를 사용하면 사용자 로그인이나 액세스 토큰을 사용하지 않고도 출력하고 출력 할 수 있습니다.

도움을 주셔서 감사합니다.

데이브.

+0

변수 또는 개체에 포함 된 데이터 구조가 확실하지 않을 때마다 var_dump/print_r을 사용하십시오. 그래도 개별 데이터에 액세스하는 방법을 이해하는 데 도움이되지 않으면 먼저 PHP 초보 자습서를 읽어보십시오. – CBroe

답변

0

json_decode 다음에 개체가 생성됩니다.

$ fbarray-> data를 사용하면 개체 배열을 얻을 수 있습니다. 각 객체를 반복하고 유형을 확인하십시오.

for(key in $fbarray->data){ 
    $element = $fbarray->data[key]; // you get each element. 
    if($element->type =="photo") // check for different types 
    { 
    // display as photo. 
    echo '<img src="$element->picture">'; 
    } 
    if($element->type =="status") 
    { 
    // display message. 
    echo $element->message; 
    } 
} 

처럼 당신은 트리보기를 얻을 jsonedtor 같은 온라인 JSON 편집기를 사용할 수 있습니다. 이것은 json의 트리 구조를 이해하는 데 도움이됩니다.

+0

안녕하세요, 네가 나무 대신에 말한대로 정보가 표시되기 때문에 그 후에해야할 일이 아직도 확실하지 않은 경우를 제외하고는 위대합니다. 게시물의 ID 또는 메시지를 반향시키고 싶다고 말하면 어떻게해야합니까 $ 요소? –

+0

업데이트 된 답변이 도움이되는지 확인하십시오. –

0

여기에 몇 가지 문제가 있습니다. 1) 검색 문자열을 urlencode해야합니다. 둘째, $fbarray이 개체입니다. 당신은 단 하나의 아이템을 얻지 못할 것입니다. 이 코드를보십시오 :

$str = "i hate my boss"; 
$str = urlencode($str); 
$fbquery = "https://graph.facebook.com/search?q={$str}&type=post"; 
$fb = file_get_contents($fbquery, 'rb'); 
$fbarray = json_decode($fb, true); 
foreach ($fbarray as $item) { 
    echo $item['message']; 
} 

이 같은 공공 쿼리를 테스트하려면 브라우저의 주소 표시 줄로 $fbquery URL을 붙여 넣기하고 반환 된 데이터를 얻을 수 있는지 확인 할 수 있습니다.

+0

그게 놀랍습니다 그리고 어느 정도는 작동하지만, 주소 표시 줄에 들어가서 엔터를 누르면 여러 부분으로 나누어서 $ fbarray-> 데이터를 사용해 보았습니다.하지만 그때는 작동하지 않았습니다. 나는 정보의 일부를 얻는 $ fbarray [ 'data']를 시도했으나 별도의 배열 인 부품이 있었는데, 어떻게 그 배열로 갈 것인가? –

+0

@CBroe가 권장하는대로'print_r ($ fbarray)'를 사용하면 반환 된 데이터의 전체 표현을 볼 수 있습니다. 그러면 PHP에서 변수를 가져 오는 방법을 알 수 있습니다. 예를 들어 위의 echo 문을 다음과 같이 변경할 수 있습니다 : printf ('% s'% s ', $ item ['from '] ['name '], $ item ['message ']) – cpilko