如何在群墙上发布新消息


How to post new message on a group wall

我有一个网站的食谱,也该网站有一个小组在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

那么你需要做的就是发布(以用户身份运行你的脚本):

  1. publish_actions权限
  2. 用户access_token

现在将其用作cronjob,我通常执行以下操作:

  1. 授权用户(有权向该组发布)所需的权限
  2. 扩展其令牌
  3. 将此令牌存储在DB
  4. 使用令牌发布
  5. 密切关注到期变量,在令牌到期3天之前->发送电子邮件给用户再次"登录"到您的应用程序,然后转到#3
  6. 总是在发布时捕获任何错误并记录它;您可以检查错误是否与访问令牌有关,然后转到#5