如何在组墙上发布新消息

时间:2013-01-20 16:03:25

标签: php facebook cron

我有一个有食谱的网站,而且该网站在Facebook上有几千个朋友的小组。我想在群组时间轴上发布新的食谱。我可以每隔1小时用cron做一次。

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守护程序发布到组页面?

我稍微更改了脚本,现在我有这个错误: 错误类型:OAuthException 错误消息:(#200)用户尚未授权应用程序执行此操作

2 个答案:

答案 0 :(得分:0)

尝试:

$config = array(
    'appId' => 'xxx',
    'secret' => 'xxx',
    'cookie' => true
);

设置cookie应该让您保持登录状态。

答案 1 :(得分:0)

正如文件here中所述:

  

用户可以通过发布HTTP POST在群组墙上发布链接   使用/GROUP_ID/feed权限和publish_actions请求publish_stream   以下参数。 (publish_actions也可以,但你应该这样做   使用access_token。)这需要用户publish_actions

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

  1. access_token权限
  2. 用户{{1}}
  3. 现在使用它作为cronjob,我通常会执行以下操作:

    1. 使用所需权限授权用户(有权发布到此论坛)
    2. extend his token
    3. 将此令牌存储在数据库
    4. 使用令牌发布
    5. 密切关注到期变量,比如在令牌到期3天之前 - &gt;发送电子邮件给用户再次“登录”您的应用,然后转到#3
    6. 在发布和记录时始终捕获任何错误;您可以检查错误是否与访问令牌有关,因此可以转到#5