如何使用facebook graph api显示用户个人资料图片?

时间:2010-06-10 08:48:52

标签: php facebook facebook-graph-api

我想在我的应用程序画布页面中显示用户个人资料图片,有没有办法使用图形api来做到这一点?

我知道我可以使用FBML做到这一点,但我也希望将个人资料图片传递给我正在制作的Flash游戏,所以我必须从api获取个人资料图片并将其作为变量发送,这里是我到目前为止的代码,

$facebook = new Facebook(array(
    'appId'  => FACEBOOK_APP_ID,
    'secret' => FACEBOOK_SECRET_KEY,
    'cookie' => true,
    'domain' => 'myurl/facebook-test'
));

$session = $facebook->getSession();

        $uid = $facebook->getUser();
        $me = $facebook->api('/me');

        $updated = date("l, F j, Y", strtotime($me['updated_time']));

        echo "Hello " . $me['name'] . $me['picture'] . "<br />";
  echo "<div style=\"background:url(images/bg.jpg); width:760px; height:630px;\">" . "You last updated your profile on " . $updated . "</div>" . "<br /> your uid is" . $uid;

$me['picture']似乎没有用,但我对图表api仍然很新,我可能会犯一些非常业余的错误!

9 个答案:

答案 0 :(得分:125)

了解用户ID,其个人资料图片的网址为: -

http://graph.facebook.com/[UID]/picture

代替[UID]放置$ uid变量,该URL可以传递给flash

答案 1 :(得分:81)

要获得不同的大小,可以使用类型参数:

您可以使用type参数指定所需的图片大小,该参数应为方形(50x50),小(50像素宽,可变高度)和大(宽约200像素,可变高度)之一:{{ 3}}

答案 2 :(得分:22)

您还可以通过提供如下所示的参数来调整个人资料照片的大小。

https://graph.facebook.com/[UID]/picture?width=140&height=140

也可以。

答案 3 :(得分:7)

  //create the url
  $profile_pic =  "http://graph.facebook.com/".$uid."/picture";

 //echo the image out
 echo "<img src=\"" . $profile_pic . "\" />"; 

对我来说很好用

答案 4 :(得分:4)

编辑:所以facebook再次改变了!不再按用户名搜索 - 修改了下面的答案......

https://graph.facebook.com/{{UID}}/picture?redirect=false&height=200&width=200
  • UID =个人资料或网页ID
  • 重定向要么返回json(false),要么返回 重定向到图像(true)
  • 高度和宽度是作物
  • 不需要身份验证

e.g。 https://graph.facebook.com/4/picture?redirect=false&height=200&width=200

Facebook Graph picture doc

答案 5 :(得分:3)

这是适用于我的代码!

假设你有一个有效的会话,

//Get the current users id
$uid = $facebook->getUser();

//create the url
$profile_pic =  "http://graph.facebook.com/".$uid."/picture";

//echo the image out
echo "<img src=\"" . $profile_pic . "\" />";

Thanx去了Raine,你这个男人!

答案 6 :(得分:1)

使用CURL时,我在查找个人资料照片时遇到问题。我想了一段时间我的Facebook API的实现有些不对劲,但我需要在我的CURL中添加一些名为:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

答案 7 :(得分:1)

一个非常重要的事情是,与其他Graph API请求一样,您不会在响应中获取JSON数据,而是调用将HTTP REDIRECT返回到配置文件pic的URL。因此,如果要获取URL,则需要读取响应HTTP标头,或者可以使用FQL。

答案 8 :(得分:-1)

返回的数据是图像类型的二进制数据。如果使用JavaScript检索用户照片,请在XMLHttpRequest中以blob类型获取照片数据,然后从响应中检索blob URL。供您参考:

 var request = new XMLHttpRequest;
 var photoUri=config.endpoints.graphApiUri + "/v1.0/me/photo/$value";
 request.open("GET",photoUri);
 request.setRequestHeader("Authorization","Bearer "+token);
 request.responseType = "blob";
 request.onload = function (){
        if(request.readyState == 4 && request.status == 200){
               var image = document.createElement("img");
               var url = window.URL || window.webkitURL;
               var blobUrl = url.createObjectURL(request.response);
               image.src = blobUrl;
               document.getElementById("UserShow").appendChild(image);
        }
 };
 request.send(null);