我正在通过php sdk 4版本开发一个facebook应用程序 我的代码如下:
try {
$session = $helper->getSession();
} catch (FacebookRequestException $ex) {
echo $ex->getMessage();
} catch (\Exception $ex) {
echo $ex->getMessage();
}
if ($session) {
try {
$request = new FacebookRequest($session, 'GET', '/me');
$response = $request->execute();
$me = $response->getGraphObject();
$user_id = $me->getProperty('id');
echo $user_id;
$accessToken = $session->getAccessToken();
echo $accessToken;
echo "<br>".$user_id;
$request = new FacebookRequest($session, 'GET', '/me/albums');
$response = $request->execute();
$userAlbums = $response->getGraphObject();
echo $userAlbums['data'][0]['id'];
} catch(FacebookRequestException $e) {
echo $e->getMessage();
}
} else {
$helper = new FacebookRedirectLoginHelper('https://apps.facebook.com/lykebook/');
$auth_url = $helper->getLoginUrl(array('user_friends', 'publish_actions', 'user_photos', 'user_status', 'friends_photos','friends_status','publish_stream'));
echo "<script>window.top.location.href='".$auth_url."'</script>";
}
但问题是我没有收到任何专辑数据。我不知道问题是什么?早先的要求是:/我工作正常。我通过打印$ user_id来检查。但下一个获取专辑的请求不起作用,即/我/专辑。帮我纠正这个。
答案 0 :(得分:1)
尝试使用getGraphObjectList()
方法,因为您需要多个对象。然后结果将是GraphObject
个对象的数组,see here。
从这里开始,您需要使用可用的辅助方法(例如getProperty()
)来访问这些对象而不是数组。
否则,您可以使用asArray()
检索支持此对象的数组。
答案 1 :(得分:0)
你可以使用getGraphEdge,代码如下:
$fb->setDefaultAccessToken($accessToken);
try {
$response = $fb->get('/me/albums');
$albums = $response->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;
}
foreach ($albums as &$value) {
echo $value;
}