2011-11-03 124 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