如何使用Facebook PHP SDK自动向朋友墙发帖


How to post to friends wall automatically using Facebook PHP SDK

即使用户当前未登录,是否可以使用应用程序在facebook中发布到朋友墙/时间线?这是我目前正在编写的代码,您可以看到它在朋友墙上发布了一条消息(用实际的个人资料id代替friend_id)。这是可行的,但用户必须登录才能执行此操作。如果我想让这个脚本自动执行(无需用户干预),我不知道该怎么办。

<?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>";
}
?>

有什么想法吗?代码示例和特定文档的链接可以帮助我了解这是如何工作的,非常感谢!

当用户登录时,您需要捕获他们的"访问令牌"

$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天。


编辑:为了排除令牌,您可以调用函数

$facebook->setExtendedAccessToken();

紧接在"getAccessToken"调用之前。