Facebook API - 返回好友列表(PHP数组)

时间:2013-02-10 04:36:32

标签: php facebook facebook-graph-api

我试图在不使用PHP SDK的情况下使用Facebook应用返回用户的好友列表。 我已设法返回用户名,性别等,而不使用身份验证代码。我现在正在尝试返回一个名为用户朋友的名单,所有我设法到目前为止都是打印数组,我似乎只打印名称,因为它的布局与用户名,性别等不同。我设法回应:

$user->name

但是当我为朋友列表尝试它时它不起作用并且根本不回应任何东西,我只是想知道是否有人知道我是怎么做的?

使用print_r我得到以下内容:

Array(
[0] => Array ( [name] => Friend's name [id] => x )
[1] => Array ( [name] => Friend's name [id] => x )
[2] =>....)

直到所有朋友都被列入名单。


 { "name": "Name", 
    "hometown": {
      "id": "Hometown_id", 
      "name": "Hometown"
    }, 
    "id": "Friend_id" }

上面是每个数组的结构,我认为一个潜在的问题是不是每个人都有一个家乡设置,这可能是我收到forEach错误的原因?

2 个答案:

答案 0 :(得分:1)

鉴于数组结构,获得你想要的东西非常简单(在php中)。我建议您阅读arrays上的php手册。

试试这样的事情:

foreach ($array as $inner_array) {
    echo $inner_array['name'] . "<br />";
}

除此之外,它会......

echo $your_array[0]['name'];
echo $your_array[1]['name'];

等等第四......

<强>更新

你现在看的不是一个数组,而是一个javascript对象。它被称为 JSON :Javascript Object Notation。

您需要一个特殊的解析器来将其解释为一个数组:json_decode(),它附带的php大于或等于5.2.0。要使数组关联,必须传递第二个参数,布尔值true。否则默认为false。用法示例:

$json = '{ "name": "Name", 
    "hometown": {
      "id": "Hometown_id", 
      "name": "Hometown"
    }, 
    "id": "Friend_id" }';

$json_arr = json_decode($json,true);

foreach ($json_arr as $key => $var) {
    if (!is_array($var)) {
        if ($key == 'name') {
            echo $var . "<br />";
        }
    }
}

更新2:

foreach ($json_arr as $key => $var) {
    if (!is_array($var)) {
        if ($key == 'name') {
            echo "Name: " . $var . "<br />";
        }
    }
    else {
        if ($key == 'hometown') {
            echo "Hometown: " . $var['name'] . "<br />";
        }
    }
}

以上应该做你需要的。

答案 1 :(得分:0)

从Facebook查询特定数据的最佳方式是FQL。查看https://developers.facebook.com/docs/technical-guides/fql/,如果您正在寻找,请告诉我。

我提供的链接上的示例将抓住所有活跃用户的朋友。如果您将示例用作启动器(已填写适用于您的应用的所有适当信息以及有效的访问令牌),请转到其中显示// run fql query的区域并将uid2更改为{{ 1}}在以下行中:

name

将以下内容添加到脚本末尾会将所有朋友的名称填充到名为fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()

的数组中
$names

这有助于你做你想做的事吗?让我知道:))