即使用户当前没有登录,是否可以使用应用在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>";
}
?>
有什么想法吗?非常感谢代码示例以及指向特定文档的链接,这些文档可以帮助我对其工作原理有所了解,非常感谢!
答案 0 :(得分: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天。
编辑:为了代表令牌,你可以调用函数
$facebook->setExtendedAccessToken();
紧接在“getAccessToken”调用之前。