开发者

Facebook PHP code can't get name

I'm trying to write PHP code that will display the logged in user's name. So far I've got it to display the user's id but I can't get the name to show.

    <?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']);
     }  

 ?>

Changing 'user_id' to 'name' or 'first_name' doesn't show anything.


You need to hit the /me API to get user data.

If using PHP, why don't you check out the PHP SDK?


Recommend to use with Facebook PHP SDK.

You can call like that

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


It is also much shorter and easy to use PHPforFB framework (http://www.phpforfb.com/en).

The code looks like this:

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);
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜