我创建了这个PHP脚本,用于定期将消息发送到我管理的Facebook页面。
我的脚本工作正常,但依赖于我作为用户登录Facebook。我希望这个脚本作为一个cron作业运行,所以我担心如果我退出,脚本将无法工作。
即使我没有登录Facebook,我怎样才能使它工作?
请注意,我根据要求创建了一个Facebook应用程序,以便能够使用Facebook API。有没有办法发布Facebook应用程序呢?
这是我的代码,如果它有帮助。
require_once('config.inc.php');
require '_classes/facebook-php-sdk/src/facebook.php';
$homeurl = 'http://domain.com/to-facebook/index.php';
$post_url = '/'.PAGEID.'/feed';
// The message
$msg_body = array(
'message' => 'hello world',
);
// Post to Facebook
$facebook = new Facebook(array(
'appId' => FB_APP_ID,
'secret' => FB_APP_SECRET,
));
// Get User ID
$fbuser = $facebook->getUser();
if ($fbuser) {
try {
$postResult = $facebook->api($post_url, 'post', $msg_body );
} catch (FacebookApiException $e) {
echo $e->getMessage();
}
}else{
// I would like never to come to this point...
$loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$homeurl,'scope'=>'publish_stream,manage_pages,publish_actions,status_update,offline_access'));
header('Location: ' . $loginUrl);
}
if($postResult)
{
echo '<h1>Your message is posted on your facebook wall.</h1>';
}
*更新* 我尝试了cronjob,不幸的是,过了一段时间我得到了“错误验证访问令牌:会话已在unix时间到期”消息。我很困惑。我做错了什么?
答案 0 :(得分:0)
对于与您的应用相关的网站: 当您拥有应用获得manage_pages的权限时,您可以使用您的用户令牌运行api,从而为您提供所有页面的访问权限。这些令牌可以永远存在。
授权应用的用户: 您可以使access_token持续更长时间。但是,用户需要登录才能刷新扩展令牌。阅读更多关于“Facebook Extend Token”的信息。
以前有一个允许应用程序能够永久重用令牌的权限,但它已不再可用。现在最好的办法就是每次用户登录应用程序时都只需运行api即可扩展令牌。
答案 1 :(得分:0)
**更新** 我尝试了cronjob,不幸的是,过了一段时间我得到了“错误验证访问令牌:会话已在unix时间到期”消息。我很困惑。我做错了什么?
我似乎找到了基于这个答案Facebook Access Token for Pages的解决方案。 它解释了如何将access_token获取到FB应用程序的特定页面。 我获得了它,然后调整了我的代码。我使用浏览器对其进行了测试,其中我没有登录到Facebook,并且它可以正常工作。
如果有帮助,这是更新的脚本。
$msg_body = array(
'message' => $message->message.' v/ @'.$message->author,
'access_token' => FB_ACCESS_TOKEN
);
try {
$postResult = $facebook->api($post_url, 'post', $msg_body );
} catch (FacebookApiException $e) {
echo $e->getMessage();
}
if($postResult)
{
echo '<h1>Your message is posted on your facebook wall.</h1>';
print_r($msg_body);
}
我会把cronjob运行几天,如果证明不能可靠地工作,我会回复你。
答案 2 :(得分:0)
您可以轻松使用CURL。 Google就像这样,“CURL登录,CURL facebook登录”