2011-03-17 6 views
0

로그인 한 사용자의 이름을 표시하는 PHP 코드를 작성하려고합니다. 지금까지 사용자의 ID를 표시하도록했지만 표시 할 이름을 가져올 수 없습니다.Facebook PHP 코드가 이름을 가져올 수 없습니다.

<?php 

    $app_id = "..."; 

    $canvas_page = "..."; 

    $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
      . $app_id . "&redirect_uri=" . urlencode($canvas_page); 

    $signed_request = $_REQUEST["signed_request"]; 

    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    $data = json_decode(base64_decode($payload), true); 

    if (empty($data["user_id"])){ 
      echo("<script> top.location.href='" . $auth_url . "'</script>"); 
    } else { 
      echo ("Welcome User: " . $data['user_id']); 
    } 

?> 

'user_id'를 'name'또는 'first_name'으로 변경해도 아무 것도 표시되지 않습니다.

+0

당신이 그것을 포함 된 내용을 표시하는 데이터 $의 내용을 인쇄 할 수 있습니까? –

+0

$ 데이터를 echo하려고하면 "array"가 출력됩니다. $ data [0]과 같은 색인을 사용하면 공백 만 인쇄됩니다. – FoppyOmega

+1

print_r 또는 다른 함수를 사용하여 배열을 인쇄하십시오 - 에코는 작동하지 않습니다. –

답변

3

사용자 데이터를 얻으려면 /me API를 사용해야합니다.

PHP를 사용하는 경우 PHP SDK을 확인하십시오.

+0

example.php를 사용해 보았지만 페이지를 열면 github sdk 페이지가 표시됩니다. 사실 언제든지 "require '../src/facebook.php';" 선은 그 페이지를 열뿐입니다. – FoppyOmega

+0

@Foppy 혼란스러워. 당신은'example.php'를 "사용하지"않고, SDK를 사용하는 예를보기 위해 소스를 읽었을 것입니다. SDK를 컴퓨터에 다운로드 한 다음'facebook.php' 파일을 포함시켜야합니다. 또한'fb_ca_chain_bundle.crt'가'facebook.php'와 같은 디렉토리에 있어야합니다. – Phil

+0

나는 cUrl, Perl 및 OpenSLL에 대해 많은 것을 배울 필요가있었습니다. 또한 내 웹 호스트는 모든 것을 망치고있는 https를 허용하지 않습니다. – FoppyOmega

2

Facebook PHP SDK와 함께 사용하는 것이 좋습니다.

당신은 훨씬 짧고 PHPforFB 프레임 워크 (http://www.phpforfb.com/en)를 사용하기 쉬운이

try { 
    $me = $facebook->api('/me'); 
    print_r($me); 
    echo $me['name']; 
} catch (FacebookApiException $e) { 
    error_log($e); 
} 
1

처럼 호출 할 수 있습니다.

코드는 다음과 같습니다

include(‘phpforfb_framework.php’); 
$FacebookAPP = new PHPforFB($structInit); 
//Query basic permissions. 
if(($res = $FacebookAPP->ForcePermissions('basic')) === FALSE){ 
    //An error occurred when querying the permissions 
    echo "PHPforFB Error: ".$FacebookAPP->lastErrorCode." -> ".$FacebookAPP->lastError; 
    exit; 
}else{ 
    //Evaluate the result 
    if($res==0){ 
     //The user declined. 
    }else{ 
     //The user accepted to grant permissions to the application. 
     $res = $FacebookAPP->GetUserInfo(); 
     print_r($FacebookAPP->userData); 
    } 
} 
관련 문제