我无法使用最新的facebook SDK PHP 5.0获取用户的Facebook好友列表。我已经阅读了Facebook Developers网站上的文档,但并不是很了解它。我在网站上尝试过代码:
/* PHP SDK v5.0.0 */
/* make the API call */
$request = new FacebookRequest(
$session,
'GET',
'/me/friends'
);
$response = $request->execute();
$graphObject = $response->getGraphObject();
/* handle the result */
当我尝试这个时,我只会得到"致命错误:Class' FacebookRequest'在/Applications/XAMPP/..."中找不到。在页面顶部的Developer site上显示"本文档引用了过时的Graph API版本。请使用最新版本。"但链接不会导致任何地方?这是为什么我会得到一个致命的错误?我真的不确定它可能是什么,所以我想问这里。 这是我当前代码的副本:
的init.php
<?php
session_start();
require_once 'vendor/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => '******',
'app_secret' => '******',
'default_graph_version' => 'v2.5',
]);
<?php
require_once 'app/init.php';
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email', 'user_likes', 'user_friends', 'user_birthday', 'user_location', 'user_education_history', 'user_hometown']; // optional
$loginUrl = $helper->getLoginUrl('http://localhost/Tutorials/FB_login/login-callback.php', $permissions);
if(!isset($_SESSION['fb_access_token'])){
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
} else {
echo '<a href="signout.php">Sign Out!</a> <br />';
$accessToken = $_SESSION['fb_access_token'];
try {
// Returns a `Facebook\FacebookResponse` object
$response = $fb->get('/me?fields=id,name,email,likes,first_name,last_name,birthday,hometown,gender,picture', $accessToken);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$user = $response->getGraphUser();
echo 'Email: ' . $user->getEmail() . '<br />';
echo 'First Name: ' . $user->getFirstName() . '<br />';
echo 'Last Name: ' . $user->getLastName() . '<br />';
echo 'Name: ' . $user->getName() . '<br />';
echo 'Birth: ' . $user->getBirthday()->format('Y-m-d') . '<br />';
echo 'HomeTown: ' . $user->getHometown()['name'] . '<br />';
echo 'Gender: ' . $user->getGender() . '<br />';
echo '<img src="' . $user->getPicture()['url'] . '">';
我想要做的就是回复朋友列表或者只是一个计数,但不知道我该怎么做。我真的被困在这上面并且无法理解文档。有谁知道实现这个的正确/最佳方法?
非常感谢!
答案 0 :(得分:0)
我解决了这个问题只是因为其他人遇到了同样的问题。首先,您必须在FB开发者页面上进行应用程序审核。接下来,你必须添加可标记的朋友到你的应用程序,使用此代码,嘿presto !!
if (isset($accessToken)) {
if (isset($_SESSION['facebook_access_token'])) {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
} else {
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// validating the access token
try {
$request = $fb->get('/me');
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
if ($e->getCode() == 190) {
unset($_SESSION['facebook_access_token']);
$helper = $fb->getRedirectLoginHelper();
$loginUrl = $helper->getLoginUrl('http://localhost/Tutorials/FB/index.php', $permissions);
echo "<script>window.top.location.href='".$loginUrl."'</script>";
}
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
// get list of friends' names
try {
$requestFriends = $fb->get('/me/taggable_friends?fields=name&limit=1000');
$friends = $requestFriends->getGraphEdge();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if ($fb->next($friends)) {
$allFriends = array();
$friendsArray = $friends->asArray();
$allFriends = array_merge($friendsArray, $allFriends);
while ($friends = $fb->next($friends)) {
$friendsArray = $friends->asArray();
$allFriends = array_merge($friendsArray, $allFriends);
}
foreach ($allFriends as $key) {
echo $key['name'] . "<br>";
}
//echo count($allfriends);
} else {
$allFriends = $friends->asArray();
$totalFriends = count($allFriends);
$counter = 0;
foreach ($allFriends as $key) {
echo $key['name'] . "<br>";
$counter++;
}
echo $counter;
}
} else {
$helper = $fb->getRedirectLoginHelper();
$loginUrl = $helper->getLoginUrl('http://localhost/Tutorials/FB/index.php', $permissions);
}