【问题标题】:Getting list of Facebook friends with latest API使用最新 API 获取 Facebook 好友列表
【发布时间】:2023-03-27 11:45:01
【问题描述】:

我正在使用the most recent version of the 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,我可以获取我的信息并将其转储到屏幕上...即此代码之前完美执行失败的friends.get调用:

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

【问题讨论】:

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


    【解决方案1】:

    我想这就是你想要的:

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

    【讨论】:

    • 你知道如何通过 api 调用获取某人的头像吗?类似... $friends = $facebook->api('/idofosmefriend/picture');所有这些电话都有一些文档吗?谢谢!
    • @nfvs,你知道我如何访问friends_hometown吗?
    • 这不再适用于 Graph API v2 甚至旧版 Graph API v1 应用程序。请参阅:developers.facebook.com/docs/graph-api/reference/v2.0/user/…“这只会返回任何使用(通过 Facebook 登录)提出请求的应用的朋友。”
    【解决方案2】:

    这是 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>';
        }
    ?>
    

    【讨论】:

    【解决方案3】:

    得到像@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>';
    }
    

    【讨论】:

    • 成功了!谢谢,只有一行对我抛出了错误....在第二个 foreach 循环中...我将其更改为以下内容,因此它对我有用, echo '
    • graph.facebook.com' . $ fvalue->id . '/picture" title="' . $fvalue->name . '"/>
    • ';
  • 它按照您的建议工作,并在代码中进行了更新。谢谢 Stevanicus 和 Geoffa
  • 【解决方案4】:

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

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

    【讨论】:

    • 有什么方法可以通过 2.0 Graph API 获取所有好友的列表吗?
    【解决方案5】:

    如果你想使用 REST 端点,

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

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        改用 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/ 上的精彩互动示例

        【讨论】:

          【解决方案8】:

          使用 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.
          

          【讨论】:

            【解决方案9】:
            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>';
            

            【讨论】:

              【解决方案10】:

              【讨论】:

                【解决方案11】:

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

                在您的页面中输入。

                【讨论】:

                  猜你喜欢
                  相关资源
                  最近更新 更多
                  热门标签