我正在使用最新版本的Facebook PHP SDK v4.0.12。我正在尝试使用SDK获取我的Feed。我有SDK设置并正常工作。
我从这个示例代码开始:
// save the session
$_SESSION['fb_token'] = $session->getToken();
// create a session using saved token or the new one we generated at login
$session = new FacebookSession( $session->getToken() );
// graph api request for user data
$request = (new FacebookRequest(
$session,
'GET',
'/me'
))->execute()->getGraphObject(GraphUser::className());
var_dump($request);
所有这些都很有效,我可以看到我的名字,年龄,性别等。该请求没有问题。
我想我应该能够使用相同的代码进行一次微妙的改变来获取我/我/ Feed。
// save the session
$_SESSION['fb_token'] = $session->getToken();
// create a session using saved token or the new one we generated at login
$session = new FacebookSession( $session->getToken() );
// graph api request for user data
$request = (new FacebookRequest(
$session,
'GET',
'/me/feed'
))->execute()->getGraphObject(GraphUser::className());
var_dump($request);
但不幸的是,这不起作用。我得到一个空数组或正如其他人在这里所说,他们看到“对象(Facebook \ GraphUser)#334(1){[”backingData“:protected] => array(0){}}”。我发现的类似问题对我来说并没有完全回答。我尝试了一些东西,但没有太多运气。
更新#2 - 回复以下评论
我的登录链接如下所示:
echo '<a href="' . $helper->getLoginUrl( array( 'user_status,read_stream' ) )
. '" target="_top">Login</a>';
我已尝试注销,然后重新登录以希望重置权限。
我也试过这个:
// graph api request for user data
$request = (new FacebookRequest(
$session,
'GET',
'/me/feed'
))->execute()->getGraphObject()->asArray();
这会输出一个空白数组。
答案 0 :(得分:1)
由于我只在评论中回答,这是真实的:
您需要通过查看debugger中的访问令牌来确保read_stream
获得正确授权。
顺便说一下,在创建任何带有read_stream的应用程序之前请先阅读此内容:https://developers.facebook.com/docs/facebook-login/permissions/v2.2#reference-read_stream