我有一个网站的食谱,也该网站有一个小组在facebook与数千名朋友。我想在小组时间轴上发布新的食谱。我可以每隔一小时做一次。
require_once('facebook.php');
$config = array(
'appId' => 'xxx',
'secret' => 'xxx',
);
$facebook = new Facebook($config);
// If not, we'll get an exception, which we handle below.
try {
$ret_obj = $facebook->api('/page_id/feed', 'POST',
array(
'link' => 'www.example.com',
'message' => 'Posting with the PHP SDK!'
));
echo '<pre>Post ID: ' . $ret_obj['id'] . '</pre>';
} catch(FacebookApiException $e) {
echo "error type: ". $e->getType()."<br />";
echo "error mesage: ". $e->getMessage()."<br />";
}
我应该如何改变我的脚本,以便能够从cron守护进程在组页面上发布?
我稍微改变了一下脚本,现在我有这个错误:错误类型:oautheexception错误信息:(#200)用户没有授权应用程序执行此操作
尝试:
$config = array(
'appId' => 'xxx',
'secret' => 'xxx',
'cookie' => true
);
设置cookie可以让你保持登录状态
如文档中所述:
用户可以通过HTTP post在Group的墙上发布链接请求
/GROUP_ID/feed
具有publish_actions
权限和以下参数。(publish_stream
也会工作,但你应该使用publish_actions
。)这需要一个用户access_token
。
那么你需要做的就是发布(以用户身份运行你的脚本):
-
publish_actions
权限 用户
access_token
现在将其用作cronjob,我通常执行以下操作:
- 授权用户(有权向该组发布)所需的权限
- 扩展其令牌
- 将此令牌存储在DB
- 使用令牌发布
- 密切关注到期变量,在令牌到期3天之前->发送电子邮件给用户再次"登录"到您的应用程序,然后转到#3
- 总是在发布时捕获任何错误并记录它;您可以检查错误是否与访问令牌有关,然后转到#5