70

我想在我的应用程序画布页面内显示用户个人资料图片,有没有办法使用图形 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 还是很陌生,我可能犯了一些非常业余的错误!

4

9 回答 9

125

知道用户 ID,他们的个人资料图片的 URL 是:-

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

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

于 2010-06-10T09:00:01.517 回答
81

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

您可以使用 type 参数指定您想要的图片大小,它应该是正方形(50x50)、小(50 像素宽,可变高度)和大(大约 200 像素宽,可变高度)之一:http://graph .facebook.com/squall3d/picture?type=large

于 2010-08-13T08:37:32.960 回答
22

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

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

也可以。

于 2012-09-10T15:25:51.217 回答
7
  //create the url
  $profile_pic =  "http://graph.facebook.com/".$uid."/picture";

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

对我来说很好

于 2011-05-12T08:53:19.790 回答
4

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

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

例如https://graph.facebook.com/4/picture?redirect=false&height=200&width=200

Facebook 图表图片文档

于 2015-02-04T16:07:55.367 回答
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 . "\" />";

谢谢你去雷恩,你这个男人!

于 2010-06-10T10:17:36.527 回答
1

我在使用 CURL 时获取个人资料照片时遇到问题。我想了一会儿我的 Facebook API 实现有问题,但我需要在我的 CURL 中添加一些内容,称为:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
于 2011-08-17T22:15:46.417 回答
1

一件非常重要的事情是,与其他 Graph API 请求一样,您不会获得 JSON 数据作为响应,而是该调用将 HTTP REDIRECT 返回到配置文件图片的 URL。因此,如果您想获取 URL,您要么需要读取响应 HTTP 标头,要么可以使用 FQL。

于 2012-10-27T09:48:38.360 回答
-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); 
于 2019-07-17T03:09:06.630 回答