php – 通过cron发布到facebook

前端之家收集整理的这篇文章主要介绍了php – 通过cron发布到facebook前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经尝试了两天,将从Twitter搜索收集的邮件自动发布到我的一个Facebook页面 – 即通过cronjob.

推特部分很好,但对于我的生活,我无法让Facebook部分工作.

问题是我的脚本工作……直到它没有,通常access_token在几个小时后过期.

现在我有这样的信息:
#200)演员是页面的帖子也不能包含target_id.

我在各种SO线程上尝试了许多建议.问题是:Facebook API似乎经常发生变化,而以前的工作方式却没有.

关于如何使其可靠地工作的任何想法和建议都是受欢迎的.

这是我到目前为止的代码.我创建了一个Facebook应用程序,并使用FB Graph Explorer和’/ me / account’请求生成了一个访问令牌.

require('config.inc.PHP');
require('_classes/facebook-PHP-sdk/src/facebook.PHP');

// Connect to facebook
$facebook = new Facebook(array(
        'appId'  => FB_APP_ID,'secret' => FB_APP_SECRET,));

// get the message
$msg_body = array(
    'message' => $message->message."\n".'(via http://twitter.com/'.$message->author.')','access_token' => FB_ACCESS_TOKEN 

);
// Post to Facebook
$fb_result=0;
try {
    $postResult = $facebook->api('/'.PAGEID.'/Feed','post',$msg_body );
} catch (FacebookApiException $e) {
    echo $e->getMessage();
}

if($postResult)
{
    $fb_result=1;
    $last_posted_tweet_id = $message->id;
    file_put_contents(FOLDER.LAST_TWEET_ID_FILE,$last_posted_tweet_id);
    echo 'Your message '.$message->id.' is posted on your facebook wall.';
    //print_r($msg_body);
}

UPDATE
代码在这里可见http://phpbin.net/ZMNt3MPt

我遇到了与访问令牌过期类似的问题.事实证明,您可以将您的令牌换成“长寿”令牌

管理我的代码

try{
        $token =  $facebook->getAccessToken();

        // get "long-lived" access token
        $curl = new Curl();
        $curl->setSsl();
        $exchange_url = "https://graph.facebook.com/oauth/access_token?client_id=".$facebook_app_id."&client_secret=".$facebook_app_secret."&grant_type=fb_exchange_token&fb_exchange_token=".$token;
        $page = $curl->get($exchange_url);

        if ($page){
            $page = explode("access_token=",$page);
            if (count($page) > 1){
                $page = explode("&",$page[1]);
                $token = $page[0];

                $facebook->setAccessToken($token);
            }
        }

    } catch(Exception $e){
        $token = '';
    }

猜你在找的PHP相关文章