通过id获取facebook profile square picture的原始网址

时间:2015-10-19 22:51:13

标签: php json facebook facebook-graph-api

我正在创建一个应用程序,用户登录后会加载很多Facebook好友。然后应用程序会显示这些用户的列表,我希望在每个用户旁边显示一个小方形的个人资料图片。

我发现这个网址是这样做的:

http://graph.facebook.com/4/picture?type=square

通过检查应用程序,所有数据都会在1秒内加载,但由于从graph.facebook.com到原始网址的网址转换,显示所有图片大约需要10到20秒。

所以我去检查手册,发现有关接收网址为JSON的更多信息,我可以在PHP中使用它来存储该方形图片的直接网址,因此每次重新加载应用时都不会翻译。

所以下一个网址给了我JSON:

http://graph.facebook.com/4/picture?type=square&redirect=false

这个网址会在我的浏览器中将其作为输出:

{
   "data": {
      "is_silhouette": false,
      "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfp1/v/t1.0-1/p50x50/10390028_10102210419817761_5871103530921178170_n.jpg?oh=8113088106568f3a88016bcf414ba67f&oe=56C5FA23&__gda__=1455882568_659558fb576ed2425347df8a208cbca4"
   }
}

下一步是从该JSON中获取url,我尝试使用此代码做什么

$url = 'http://graph.facebook.com/4/picture?type=square&redirect=false';
echo json_decode(file_get_contents($url))->url;
现在很奇怪的事情是经过大量的试验和考验。错误,每次我使用file_get_contents时,所有ECHO文本都消失了,即使我做了类似echo和#34; test"那个回声也消失了。即使我将该输出存储到变量,它仍然是空的。谁能告诉我我做错了什么?谢谢。

目标是..一旦用户登录..在临时位置存储用户名,用户ID和该方形用户图片的URL,直到会话被破坏,只是为了更好地获得负载性能

1 个答案:

答案 0 :(得分:0)

分析网址的答案..

{
   "data": {
      "is_silhouette": false,
      "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfp1/v/t1.0-1/p50x50/10390028_10102210419817761_5871103530921178170_n.jpg?oh=8113088106568f3a88016bcf414ba67f&oe=56C5FA23&__gda__=1455882568_659558fb576ed2425347df8a208cbca4"
   }
}

你这样做是错误的。它不是json_decode(file_get_contents($url))->url;而是json_decode(file_get_contents($url))->data->url;

所以,而不是:

$url = 'http://graph.facebook.com/4/picture?type=square&redirect=false';
echo json_decode(file_get_contents($url))->url;

成功:

$url = 'http://graph.facebook.com/4/picture?type=square&redirect=false';
echo json_decode(file_get_contents($url))->data->url;