以编程方式登录到Facebook并发布到页面(墙)

时间:2011-11-03 06:50:33

标签: php facebook-graph-api facebook

我有一个网站,我需要它不时将状态更新发布到Facebook页面。

使用我个人的Facebook帐户,我创建了一个应用程序和一个页面。到目前为止,我已经能够以编程方式发布到我的Page's Wall,将此代码添加到我的网站:

include_once "lib/facebook/src/facebook.php";

$facebook = new Facebook(array('appId' => 'APP_ID_HERE', 'secret' => 'APP_SECRET_HERE'));

if($facebook->getUser()) {

    try {
        $ret_obj = $facebook->api('/FACEBOOK_PAGE_ID_HERE/feed', 'POST', array(
            'link' => 'www.example.com',
            'message' => 'Posting with the PHP SDK!',
            'access_token' => 'FACEBOOK_PAGE_ACCESS_TOKEN_HERE'
        ));
        echo '<pre>Post ID: ' . $ret_obj['id'] . '</pre>';

    } catch(FacebookApiException $e) {
      // user logged out (has user_id, but invalid access token)
      $login_url = $facebook->getLoginUrl(array('scope' => 'publish_stream')); 
      echo 'Please <a href="' . $login_url . '">login.</a>';
    }
    echo '<br /><a href="' . $facebook->getLogoutUrl() . '">logout</a>';

} else {

    $login_url = $facebook->getLoginUrl(array('scope' => 'publish_stream'));
    echo 'Please <a href="' . $login_url . '">login.</a>';

}

所以我打开我的网站,点击“请登录”,以我自己的身份登录。一旦我记录下来,它现在就可以将状态更新发布到Facebook页面。

显然,这里的问题是我需要登录才能发帖。如果其他用户尝试使用他们的用户帐户登录,我的网站无法将状态更新发布到Facebook页面,因为我是该应用程序/页面的唯一管理员。

我的问题是,有没有办法让我以编程方式将自己登录到Facebook,以便我可以自动对页面进行这些状态更新?

很抱歉,这里的总菜刀是Facebook开发的。

3 个答案:

答案 0 :(得分:4)

好像你需要在Facebook离线时更新状态。要做到这一点,您需要获得应用程序用户的离线访问权限,并且您需要为Facebook应用程序提供“无限”令牌才能访问API,以便您的程序可以随时更新,无需登录到Facebook。

你可能会得到你想要的东西

http://developers.facebook.com/docs/authentication/

答案 1 :(得分:1)

我在这里参加聚会的时间有点晚了,但我想我会发布my gist example关于如何做一些非常相似的事情。我向fbconsole添加了一些功能,以便以编程方式使用fbconsole.automatically_authenticate轻松登录,以便更容易以系统方式访问此信息。此添加内容尚未合并到master branch of fbconsole中(它刚刚在今天上午发布),但同时对于那些感兴趣的人来说,here可用。

答案 2 :(得分:0)

这就是我用来做的事情,

 // = SET WALL DATA HERE ===============
$attachment = array(
'access_token' => 'My Access token here',
'message'      => '',
'name'         => 'My Wall Post Header/Title Here',
'caption'      => 'Small caption here',
'link'         => 'http://www.mywebsite.org',
'description'  => 'Wall Post Details Here',
'picture'      => "http://www.mywebsite.org/images/logo.gif",
);

// =POST ON FACEBOOK WALL ==========================
$this->facebook->api('/me/feed', 'POST', $attachment);
, $attachment);

请包含您的Facebook API,获取您的Facebook访问令牌,为您的墙贴设置数据,并使用我/ Feed方式调用facebook api。

这会在你的墙上张贴墙贴而不要求登录。

确保使用正确的访问令牌。