Facebook名称是否可以使用Facebook API公开访问

时间:2014-02-19 01:00:13

标签: php facebook facebook-graph-api

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似乎无法正常工作。

1 个答案:

答案 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"];

PHP fiddle here

更新:根据上面的代码,值得添加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);  
?>

PHP Fiddle here

值得注意的是,从图表中提取大量数据需要一段时间。看看批处理请求可以加快速度。 More info here