如何在Facebook画布应用程序授权期间获取用户名?

时间:2013-04-15 08:11:05

标签: php facebook-authentication facebook-canvas

我已成功使用此代码授权我的画布应用程序,但我只能获取用户ID。我还需要用户名,年龄朋友列表.Plz帮帮我。

我使用了Print_r并得到了这个

Array ( [algorithm] => HMAC-SHA256 [expires] => 1366020000 [issued_at] => 1366012878 [oauth_token] => BAAFaFlrFWXYBADDEIui8rTtcEWldiZAGlHZB1mGSZoQ6E9fU9vkweYnx2jvj4SSDNRUd465YcAiz4hI3jlQlXLBmB0jVXZBeoAiSyO5P2TQoIQVt9SQRWVJEuTGtcyQzazZCi20MWhDqBsa1qgYWKloSRWOkKBdPDBZCI0exZA13Jygh73hsr9ldVvFy8ClgEb8jIZBblCArGT3lb7g [user] => Array ( [country] => pk [locale] => en_US [age] => Array ( [min] => 21 ) ) [user_id] => 100000 

PHp代码

 $app_id = "    xxxxxxxxx";

$canvas_page = "xxxxxxxx";

$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(strtr($payload, '-_', '+/')), TRUE);

if(empty($data["user_id"])) {



    echo("<script> top.location.href='" . $auth_url . "'</script>");

} else {

    print_r($data) ;
    echo ("Welcome User: " . $data["user_id"]);
    echo ("Welcome User: " . $data["age"]); //i tried this,but got undefined message?

}

2 个答案:

答案 0 :(得分:0)

您可以在Graph API中访问发送已签名请求的用户端点, 例如查询https://graph.facebook.com/me?fields=id,name 将为您提供经过身份验证的用户的用户名。 看到 http://developers.facebook.com/docs/reference/api/user/ 供参考。

我建议你使用Facebook PHP SDK

你可以从github获得它,它会让事情变得更容易。我相信它有一个基本的例子可以满足您的需求。

HTH

答案 1 :(得分:0)

您需要执行API请求或使用FQL以获取有关用户的更多信息。 http://developers.facebook.com/docs/reference/php/facebook-api/有一些示例向您展示如何使用API​​方法获取用户名。然后here是FriendsList的API文档,here是FQL文档。确保您拥有read_friendlists权限。如果您有任何问题,请告诉我们。)

代码示例:
按照http://developers.facebook.com/docs/reference/php/上的说明从https://github.com/facebook/facebook-php-sdk/安装PHP SDK。

然后转到http://developers.facebook.com/docs/reference/php/facebook-api/并将第一个示例复制到一个文件中。请务必更新应用ID,应用密码以及您的require_once设置为正确的位置。

然后替换

  try {

    $user_profile = $facebook->api('/me','GET');
    echo "Name: " . $user_profile['name'];

try {
        //Get User Name
        $user_profile = $facebook->api('/me','GET');
        //Get User's Friends
        $friends_list = $facebook->api('/me/friends', 'GET');
        echo "<h1>Name: " . $user_profile['name']."</h1>";
        echo "<h2>Friends:</h2>"; 
        foreach ($friends_list['data'] as $friend)
        {
            echo $friend['name']."<br>";
        }