获取最新API的Facebook好友列表

时间:2010-09-30 21:38:36

标签: php facebook facebook-php-sdk facebook-apps facebook-friends

我正在使用the most recent version of the Facebook SDK(虽然我不确定,但它可以连接到名为'graph API'的东西)。我已经改编了Facebook的示例代码,让我连接到Facebook并且有效...但我无法获得我朋友的列表。

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

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

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

我可以确认,在我的代码中这一点之前,事情很好:我通过有效会话连接到Facebook,我可以获取我的信息并将其转储到屏幕上...即此代码执行完全之前失败的朋友。来电:

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

11 个答案:

答案 0 :(得分:58)

我认为这就是你想要的:

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

答案 1 :(得分: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>';
    }
?>

答案 2 :(得分:12)

获取像@nfvs这样的朋友描述是一种好方法。它输出一个多维数组,所有朋友都有属性id和名称(按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>';
}

答案 3 :(得分:7)

对于使用Graph API的v2.0绊倒这个问题的任何人来说,这只是一个问题:这将不再适用。在v2.0中,呼叫/我/朋友只返回也使用该应用的朋友的列表:

  
      
  • 需要具有user_friends权限的用户访问令牌才能查看当前此人的朋友。
  •   
  • 这只会返回使用(通过Facebook登录)申请的应用的任何朋友。
  •   
  • 如果此人的朋友拒绝了user_friends权限,该朋友将不会出现在此人的朋友列表中。
  •   

答案 4 :(得分:3)

如果要使用REST端点,

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

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

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

答案 5 :(得分:3)

在最新版本的facebook sdk中,由于安全原因,facebook已禁用允许您访问某个朋友列表的功能...查看文档以了解详情......

答案 6 :(得分: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/

的精彩互动示例

答案 7 :(得分:0)

  

使用CodeIgniter OAuth2 / 0.4.0 sparks,

     <\ n>在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.

答案 8 :(得分: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>';

答案 9 :(得分:0)

答案 10 :(得分:-3)

标题('Content-type:text / html; charset = utf-8');

在您的页面中输入。