我正在试图为question2answer(知识不必要)构建插件,当发布新问题时,它会将该问题作为Facebook页面上的活动发布。实现这一点不成问题。我遇到的是坚持。Php Facebook API页面访问令牌
根据我的理解,如果我错了,请纠正我的错误,是您只能通过管理员用户的帐户直接获取页面的访问令牌。当存储访问令牌的页面的管理员从注销时过期时,这会造成发布时的问题。那么,我们不能指望他们永远保持登录状态,对吧?
还有另外一种方法可以解决这个问题吗?也许可以让用户在该页面上发帖?
这是我目前使用的代码(这不是最终的,没有错误处理)。凡是说qa_opt只是存储在数据库question2answer东西
$facebook2 = new Facebook(array(
'appId' => qa_opt('facebook_app_id'),
'secret' => qa_opt('facebook_secret')
));
$facebook2->setAccessToken(qa_opt('facebook_page_access_code'));
// Try to extend token
$access_token = $facebook2->getExtendedAccessToken();
// As is, with the extended token, we currently post as the user, not the page. Let's fix that
$accounts = $facebook->api('/me/accounts?access_token='.$access_token);
foreach ($accounts as $account)
{
if ($account['id'] == qa_opt('facebook_page_id'))
{
$page_access_token = $account['access_token'];
break; // Stop processing foreach
}
}
$fbPageArgs = array('access_token' => $page_access_token,
'message' => 'A new question has been created!',
'link' => qa_q_path($params['postid'], $params['title'], true),
'name' => $params['title'],
'description' => $params['text']
);
$facebook2->api("/".qa_opt('facebook_page_id')."/feed?fields=access_token","post",$fbPageArgs);
有想法的人吗?肯定有人遇到过这个。 – Eric