2012-09-07 271 views
0

即使用戶當前未登錄,是否可以使用應用程序發佈到Facebook上的朋友牆/時間線?以下是我目前正在處理的代碼,因爲您可以看到它在朋友牆上發佈消息(將friend_id替換爲實際的個人資料ID)。這有效,但用戶必須登錄才能執行此操作。 我不知道該怎麼做,如果我想這個腳本自動執行(沒有用戶干預)。如何使用Facebook PHP SDK自動發佈給朋友牆

<?php 
require 'php_sdk/src/facebook.php'; 

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

$session = $facebook->getUser(); 
$me = null; 

if($session){ 
    try{ 
     $me = $facebook->api('/me'); 

     $facebook->api('/friend_id/feed', 'post', array('message'=>'hello without user!')); 

    }catch(FacebookApiException $e){ 
     echo $e->getMessage(); 
    } 
} 

if($me){ 
    $logoutUrl = $facebook->getLogoutUrl(); 
    echo "<a href='$logoutUrl'>Logout</a>"; 
}else{ 
    $loginUrl = $facebook->getLoginUrl(array(
     'scope' => 'user_about_me,user_birthday,user_location,email,read_friendlists,friends_location,friends_birthday,publish_stream' 
    )); 
    echo "<a href='$loginUrl'>Login</a>"; 
} 
?> 

任何想法?代碼示例以及指向特定文檔的鏈接可以幫助我獲得關於如何工作的一些想法,非常感謝!

回答

2

當用戶登錄時,你需要陷害自己「訪問令牌」

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

// NOTE: wrap these in try/catch blocks for safety - this is example only 
$session = $facebook->getUser(); 
$access_token = $facebook->getAccessToken(); 

要在以後發佈的他們,您使用的訪問令牌

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

// NOTE: wrap these in try/catch blocks for safety - this is example only 
$facebook->setAccessToken($access_token); 
// Then check /me and you should still have the same user. 
// Then post to /me/feed to post to the wall. 

令牌將是有效的2天。如果你願意,你可以延長到60天。


編輯:對於exenteding令牌,你調用函數

$facebook->setExtendedAccessToken(); 

立即 「getAccessToken」 呼叫前。

+0

謝謝,但我該如何擴展它? – user225269

+0

已被加入到答案。只需一行額外的代碼(如果您遇到錯誤,請確保您擁有最新的Facebook SDK - 最近才添加)。 – Robbie

相關問題