Facebook上的个人资料名称是否可公开访问,就好像我不需要登录Facebook来访问它们一样?
我打算将大量名称存储为较大项目的一小部分。我觉得使用Facebook Graph API抓取Facebook名称将是一个相对简单的任务,但我有点困惑。
我在http://jilltxt.net/?p=2810在线发现了另一个教程,该教程描述了使用一条简单的线条查找任何Facebook个人资料图片的简单方法:
https://graph.facebook.com/USER-ID/picture?type=large
这非常有用,因为我能够使用一系列ID号码和少量PHP来收集大量的个人资料图片,如我的测试页面所示:http://www.joshiefishbein.com/fi/photobook.php
但我不熟悉的是我如何从这一个简单的线条中收集图片到名字。可能吗?还有另一种(更好的)方式吗?
这是我正在使用的代码。 ID的范围只是一个例子。
function gen_pix($min, $max, $quantity) {
$numbers = range($min, $max);
shuffle($numbers);
$x_arr = array_slice($numbers, 0, $quantity);
foreach ($x_arr as $key => $value) {
$username = "https://graph.facebook.com/" . $value . "/";
$json = json_decode(file_get_contents($username), true);
echo $json["name"];
}
}
$x = 337800042;
$y = 337800382;
$z = 1;
gen_pix($x,$y,$z);
我已经使用了这段代码,我可以回复$username
并获得我正在寻找的网址(例如https://graph.facebook.com/337800382/
),但之后我没有得到任何结果。 json_decode
似乎无法正常工作。
答案 0 :(得分:2)
与拉动个人资料图片的方式相同,您可以获取具有ID的用户的基本信息。
This page提供了始终可公开访问的数据列表。
所以你需要发出一个GET请求来撤回JSON,就像这样......
https://graph.facebook.com/ {用户ID} /
例如https://graph.facebook.com/586207189/撤回我的基本信息。所以你的PHP看起来像这样
$json = json_decode(file_get_contents("https://graph.facebook.com/$user_id/"), true);
echo $json["name"];
更新:根据上面的代码,值得添加IF
来捕获无效的Facebook ID。 Facebook ID可能不是连续的,因此不是每个人都会返回名称或图像。
更新的代码:
<?php
function gen_pix($min, $max, $quantity) {
$numbers = range($min, $max);
shuffle($numbers);
$x_arr = array_slice($numbers, 0, $quantity);
foreach ($x_arr as $key => $value) {
$username = "https://graph.facebook.com/" . $value . "/";
$json = json_decode(file_get_contents($username), true);
if (!isset($json['name'])) {
echo "Invalid ID<br />";
}
else {
echo $json["name"]. '<br />';
}
}
}
$x = 337800042;
$y = 337800382;
$z = 50;
gen_pix($x,$y,$z);
?>
值得注意的是,从图表中提取大量数据需要一段时间。看看批处理请求可以加快速度。 More info here