使用最新的 API 获取 Facebook 好友列表
-
26-09-2019 - |
题
我在用着 Facebook SDK 的最新版本 (它可以连接到称为“图形 API”的东西,尽管我不确定)。我已经改编了 Facebook 的示例代码,让我可以连接到 Facebook,这很有效......但我无法获得我的朋友名单。
$friends = $facebook->api('friends.get');
这会产生错误消息:“致命错误:未捕获的 OAuthException:(#803) 您请求的某些别名不存在:Friends.get 被扔进 /mycode/facebook.php 第 543 行”
不知道为什么会这样或者这意味着什么。有人可以告诉我获取好友列表的正确语法(最新的 Facebook API)吗?(我尝试了“$friends = $facebook->api->friends_get();”并得到一个不同的错误,“致命错误:对 /mycode/example.php 第 129 行中的非对象调用成员函数 Friends_get()。)
我可以确认,在我的代码中的这一点之前,一切都很好:我已通过有效会话连接到 Facebook,我可以获取我的信息并将其转储到屏幕上...IE。此代码在失败的 Friends.get 调用之前完美执行:
$session = $facebook->getSession();
if ($session) {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
}
print_r($me);
解决方案
我想这是你想要什么:
$friends = $facebook->api('/me/friends');
其他提示
这是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>';
}
?>
获取朋友喜欢@nfvs描述的是一个很好的方式。它输出与属性的标识和名称(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>';
}
对于使用 Graph API v2.0 遇到这个问题的人,请注意:这将不再起作用。在 v2.0 中,调用 /me/friends 只会返回该人的好友列表 也使用该应用程序:
- 需要具有 user_friends 权限的用户访问令牌才能查看当前人的好友。
- 这只会返回任何使用过(通过 Facebook 登录)发出请求的应用程序的朋友。
- 如果此人的好友拒绝 user_friends 权限,则该好友将不会出现在此人的好友列表中。
如果您想使用REST终点,
$friends = $facebook->api(array('method' => 'friends.get'));
否则,如果您使用的图形API,然后使用,
$friends = $facebook->api('/me/friends');
在最新版本的Facebook SDK中,Facebook已经关闭,让你由于安全原因访问某一个好友列表功能...查看文档,以了解更多...
使用FQL相反,它是一个像SQL但对于Facebook的数据表,可以轻松地满足数据查询you'de喜欢做。 您将不必使用所有这些/ XX / XXX / XX的电话,只知道你中intereseted的表和列。
$myQuery = "SELECT uid2 FROM friend WHERE uid1=me()";
$facebook->api( "/fql?q=" . urlencode($myQuery) )
使用笨的OAuth2 / 0.4.0火花,
在Auth.php文件,
$user = $provider->get_user_info($token);
$friends = $provider->get_friends_list($token);
print_r($friends);
和在下提供商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.
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>';
头( '内容 - 类型:文本/ HTML;字符集= UTF-8');
在页面的输入。