我正在尝试获取用户在Facebook页面上评论的个人资料图片,以便在网站上显示。
我通过/[page_name]/feed/图形调用获取用户id,并将其放入一个url表单中,如下所示:

$id = $item['from']['id'];
$link = "http://graph.facebook.com/{$id}/picture?type=large";

它工作的很好-我得到了一些个人资料图片回来,但有些看起来像这样:http://profile.ak.fbcdn.net/static-ak/rsrc.php/v1/yp/r/yDnr5YfbJCH.gif
我只想展示真实的个人资料图片-有没有办法检测到?

最佳答案

这是可行的,但需要文件比较。
Facebook使用2张图片作为默认头像,1张为男性,另一张为女性。
所以,你必须将你得到的图像与其中一个进行比较。
一个简单的比较是在将它们的字节转换为字符串之后对它们进行比较。
最简单的例子:

<?php

$photo1 = "http://graph.facebook.com/2131243434/picture?type=large";
$photo2 = "http://profile.ak.fbcdn.net/static-ak/rsrc.php/v1/yL/r/HsTZSDw4avx.gif";
if (md5(file_get_contents($photo1)) ==  md5(file_get_contents($photo2))) {
       echo "NO PICTURE";
}
 else {
echo "REAL PICTURE";
}


?>

这将是一个缓慢的操作,因此您可以将其作为cron作业来验证后端的映像。
您可以通过将默认化身的md5存储在db中来稍微优化它,因此只需要获取1个url进行比较。
这可以使更改证明,使用一个图形api url,它一定会返回默认化身,然后你不必担心更改默认化身图像,你只需要比较2个图形api url。
比较:
a)http://graph.facebook.com/MY_TEST_ID/picture?type=large(始终返回默认化身)
b)http://graph.facebook.com/MY_NEW_USER_ID/picture?type=large(我要测试的用户)

09-11 17:40