2011-11-03 121 views
4

我有一个网站,我需要它不时发布状态更新到Facebook页面。以编程方式登录Facebook并张贴到页面(墙)

使用我的个人Facebook帐户,我创建了一个应用程序和一个页面。到目前为止,我已经能够以编程方式张贴到我的网页长城,通过将此代码添加到我的网站:

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,这样我可以自动执行这些状态更新到我的页面?

对不起,这里总共noob到Facebook的发展。

回答

4

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

你可能会得到你想要的东西在这里

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

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的访问令牌,为SET数据你的墙贴,并与我/饲料方法调用Facebook的API。

这将使您的墙上贴墙贴,而不要求登录。

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

+0

但不会将此状态发布到我的墙上,而不是我的Page的墙上? – Obay

+0

是的。要在粉丝页上发布,请确保您可以使用$ facebook-> getSession()进行基于会话的API调用。并发布在fane页面上,您可以将“me/feed”替换为“fanpageid/feed”。尝试一下。 – pinaldesai

+0

是的,这就是我所做的,检查我的代码 – Obay

1

我在这里参加派对有点晚,但是我想我会发布my gist example以了解如何做一些非常相似的事情。我向fbconsole添加了一些功能,以便以编程方式轻松登录fbconsole.automatically_authenticate,以便以系统化的方式更容易地访问此信息。这项新增功能尚未纳入master branch of fbconsole(今天早上刚发布),但对于那些有兴趣的人来说,它同时可用here