Intereting Posts
что такое «$ this» в php? Как я могу заполнить выпадающий список, выбрав значение из другого раскрывающегося списка? Установка eclipse php в ubuntu Попытка получить свойство не объекта – CodeIgniter Какие инструменты и расширения являются критическими для разработки Magento? Nginx загружает php вместо запуска IP для страны в PHP Как использовать активную загрузку здесь, я имею в виду только одну переменную вместо двух. Поэтому мне не нужно запускать два отдельных запроса Есть ли способ проверить, является ли cookie httponly в PHP Проверка, является ли строка mysql НЕ в массиве Doctrine 2.0 ReflectionException, когда я пытаюсь сделать YAML-сопоставление Как создать новую модель с Sylius через SyliusResourceBundle как точно найти данные между выбранной диагональной областью в запросе mysql Как получить значение SUM в массиве? PHP-эквивалент javascript >>> shift right с нулевыми заполняющими побитовыми операторами?

Сообщение в facebook через cron

Я пытаюсь в течение двух дней публиковать сообщения, полученные из твиттера, на одну из моих страниц в facebook автоматически, то есть через cronjob.

Часть твиттера прошла нормально, но для жизни я не могу заставить часть Facebook работать.

Проблема в том, что мой скрипт работает … до тех пор, пока это не произойдет, как правило, access_token истек через несколько часов.

Теперь у меня есть это сообщение: #200) Posts where the actor is a page cannot also include a target_id .

Я пробовал много вещей, предложенных для различных потоков SO. Проблема в том, что API Facebook, похоже, довольно часто меняется, а то, что раньше работало, не работает.

Любая идея и предложение о том, как заставить ее работать надежно, приветствуются.

Вот код, который у меня есть. Я создал приложение 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 = ''; } 

Они – другая альтернатива, которую вы можете использовать, для меня мне проще использовать Twitter Api, чтобы оставлять комментарии к twiiter и facebook в одно и то же время. Я связал его с Facebook, он отлично работает, все, что вам нужно сделать, это изменить ключ api twitter и предоставить данные. Если вы заинтересованы в этом решении, дайте мне знать, и я отправлю код здесь.