两天来,我一直在尝试将通过 twitter 搜索收集到的消息自动发布到我的一个 facebook 页面 - 即通过 cronjob。
推特部分很顺利,但对于我来说,我无法让 Facebook 部分正常工作。
问题是我的脚本可以工作......直到它不起作用,通常 access_token 会在几个小时后过期。
现在我有这个消息:
#200) Posts where the actor is a page cannot also include a target_id
。
我已经尝试了很多关于各种 SO 线程的建议。问题是:Facebook API 似乎经常变化,而过去的工作却没有。
欢迎任何关于如何使其可靠工作的想法和建议。
这是我到目前为止的代码。我创建了一个 facebook 应用程序,并使用FB Graph Explorer和对“/me/account”的请求生成了一个访问令牌。
require('config.inc.php');
require('_classes/facebook-php-sdk/src/facebook.php');
// Connect to facebook
$facebook = new Facebook(array(
'appId' => FB_APP_ID,
'secret' => FB_APP_SECRET,
));
// get the message
$msg_body = array(
'message' => $message->message."\n".'(via http://twitter.com/'.$message->author.')',
'access_token' => FB_ACCESS_TOKEN
);
// Post to Facebook
$fb_result=0;
try {
$postResult = $facebook->api('/'.PAGEID.'/feed', 'post', $msg_body );
} catch (FacebookApiException $e) {
echo $e->getMessage();
}
if($postResult)
{
$fb_result=1;
$last_posted_tweet_id = $message->id;
file_put_contents(FOLDER.LAST_TWEET_ID_FILE, $last_posted_tweet_id);
echo 'Your message '.$message->id.' is posted on your facebook wall.';
//print_r($msg_body);
}
更新 代码可见这里http://phpbin.net/ZMNt3MPt