我目前正在创建网页,用户可以在其中添加新闻。我想允许他将相同的新闻添加到他的fb粉丝页面本身。这是负责它的代码(工作):
$access_token = 'my_access_token';
FacebookSession::setDefaultApplication('APP_ID', 'APP_SECRET');
$page_id = 1;
$session = new FacebookSession($access_token);
$page_access_token = (new FacebookRequest( $session, 'GET', '/'.$page_id, array( 'fields' => 'access_token' ) ))->execute()->getGraphObject()->asArray();
$params = array(
'name' => 'test',
'description' => 'hellooo',
'message' => 'bleble',
'caption' => 'test',
'picture' => '',
'published' => true,
);
$params['access_token'] = $page_access_token['access_token'];
$post = (new FacebookRequest($session, 'POST', '/'.$page_id.'/feed', $params))->execute()->getGraphObject()->asArray();
问题实际上是访问令牌过期。该应用程序的用户不会经常使用它,但需要很长时间。
在将任何内容发布到墙上之前,有没有办法动态生成此令牌?
答案 0 :(得分:1)
您可以在getLongLivedSession
课程上致电FacebookSession
...
返回通过扩展短期访问令牌而产生的新Facebook \ FacebookSession。此方法将发出网络请求。如果您知道您已经有一个长期会话,则无需致电此。截至2014年3月,您唯一一次获得短暂会话的时间是来自Facebook SDK for JavaScript。如果此会话不是短暂的,则此方法将返回$ this。一个长寿的会议大约是几个月。短暂的会话大约是几个小时。您可以通过检查会话信息中的到期日期来确定会话是短期的还是长期的,但这不是一件精确的事情。
https://developers.facebook.com/docs/php/FacebookSession/4.0.0
您必须通过重新授权用户来最终续订。