25

我正在使用最新版本的 Facebook SDK(虽然我不确定,但它可以连接到称为“图形 API”的东西)。我已经修改了 Facebook 的示例代码,让我可以连接到 Facebook,并且可以正常工作......但我无法获得我的朋友列表。

$friends = $facebook->api('friends.get');

这会产生错误消息:“致命错误:未捕获的 OAuthException:(#803)您请求的某些别名不存在:friends.get throw in /mycode/facebook.php on line 543”

不知道为什么会这样或这意味着什么。有人可以告诉我获取朋友列表的正确语法(对于最新的 Facebook API)吗?(我尝试了“$friends = $facebook->api->friends_get();”并得到一个不同的错误,“致命错误:在 /mycode/example.php 上的非对象上调用成员函数 friends_get()第 129 行"。)

我可以确认,在我的代码中的这一点之前,一切都很好:我已通过有效会话连接到 Facebook,我可以获取我的信息并将其转储到屏幕上......即此代码在失败的朋友之前完美执行.get 调用:

$session = $facebook->getSession();
if ($session) {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
}
print_r($me);
4

11 回答 11

58

我认为这就是你想要的:

$friends = $facebook->api('/me/friends');
于 2010-09-30T23:38:39.303 回答
23

这是 PHP 代码的实时版本,用于从 Facebook 获取您的朋友

<?php
    $user = $facebook->getUser();


    if ($user) {
        $user_profile = $facebook->api('/me');
        $friends = $facebook->api('/me/friends');

        echo '<ul>';
        foreach ($friends["data"] as $value) {
            echo '<li>';
            echo '<div class="pic">';
            echo '<img src="https://graph.facebook.com/' . $value["id"] . '/picture"/>';
            echo '</div>';
            echo '<div class="picName">'.$value["name"].'</div>'; 
            echo '</li>';
        }
        echo '</ul>';
    }
?>
于 2012-04-02T23:49:37.610 回答
12

得到像@nfvs 描述的朋友是一个好方法。它输出一个多维数组,所有好友都具有属性 id 和 name(按 id 排序)。你可以看到这样的朋友照片:

foreach ($friends as $key=>$value) {
    echo count($value) . ' Friends';
    echo '<hr />';
    echo '<ul id="friends">';
    foreach ($value as $fkey=>$fvalue) {
        echo '<li><img src="https://graph.facebook.com/' . $fvalue->id . '/picture" title="' . $fvalue->name . '"/></li>';
    }
    echo '</ul>';
}
于 2010-10-20T14:31:26.353 回答
7

对于使用 Graph API v2.0 遇到此问题的任何人,请注意:这将不再有效。在 v2.0 中,调用 /me/friends 只会返回该人也使用该应用程序的朋友列表:

  • 查看当前人的好友需要具有 user_friends 权限的用户访问令牌。
  • 这只会返回任何使用(通过 Facebook 登录)提出请求的应用程序的朋友。
  • 如果此人的朋友拒绝 user_friends 权限,该朋友将不会出现在此人的朋友列表中。
于 2014-05-30T08:12:52.223 回答
3

如果要使用 REST 端点,

$friends = $facebook->api(array('method' => 'friends.get'));

否则,如果您使用的是图形 api,则使用,

$friends = $facebook->api('/me/friends');
于 2011-08-10T14:56:58.543 回答
3

在最新版本的 facebook sdk 中,出于安全原因,facebook 禁用了允许您访问某些朋友列表的功能...查看文档以了解更多信息...

于 2015-05-22T11:16:22.673 回答
2

改用 FQL,它类似于 SQL,但适用于 Facebook 的数据表,并且可以轻松涵盖您想要进行的数据查询。您不必使用所有这些 /xx/xxx/xx 调用,只需知道您感兴趣的表和列。

$myQuery = "SELECT uid2 FROM friend WHERE uid1=me()";
$facebook->api( "/fql?q=" . urlencode($myQuery) )

http://developers.facebook.com/docs/reference/fql/上的精彩互动示例

于 2011-11-18T01:47:49.330 回答
0
friends.get

是获取朋友列表的功能

是的,这是最好的

    $friends = $facebook->api('/me/friends');

    echo '<ul>';
    foreach ($friends["data"] as $value) {
        echo '<li>';
        echo '<div class="pic">';
        echo '<img src="https://graph.facebook.com/' . $value["id"] . '/picture"/>';
        echo '</div>';
        echo '<div class="picName">'.$value["name"].'</div>'; 
        echo '</li>';
    }
    echo '</ul>';
于 2014-01-02T15:03:48.550 回答
0

使用 CodeIgniter OAuth2/0.4.0 火花,

在 Auth.php 文件中,

$user = $provider->get_user_info($token);

$friends = $provider->get_friends_list($token);
print_r($friends);

并在 Provider 下的 Facebook.php 文件中,添加以下函数,

    public function get_friends_list(OAuth2_Token_Access $token)
    {
            $url = 'https://graph.facebook.com/me/friends?'.http_build_query(array(
                    'access_token' => $token->access_token,
            ));
            $friends = json_decode(file_get_contents($url),TRUE);

            return $friends;
    }

prints the facebenter code hereook friends.
于 2013-05-21T10:37:42.297 回答
0

https://graph.facebook.com/v1.0/me/friends?limit=${limit}&access_token=${accessToken}

这个api对我有用试试这个

于 2021-06-26T17:21:29.980 回答
-3

header('内容类型: text/html; charset=utf-8');

在您的页面中输入。

于 2011-05-16T19:12:26.070 回答