Это последняя попытка с PHP, если это не удается, я попробую с JS. Поэтому моя цель – опубликовать на странице FB «имя страницы» через PHP: это то, что я хочу получить
Но все, что я получаю, показано ниже. Кроме того, он отображается ТОЛЬКО этому профилю (а не друзьям / ppl, которые любят / etc.).
Это мой текущий код
function post_facebook($data=null, $redir = null){ $result = ""; require_once (ROOT. "/apps/configuration/models/ConfigurationItem.php"); require_once (ROOT . "/components/facebook/facebook.php"); $this->ConfigurationItem = new ConfigurationItem($this->getContext()); $row=$this->ConfigurationItem->findByCatKeyItemKey('system','facebook_login'); $apiid=$row['value']; <= Correct apiid $row=$this->ConfigurationItem->findByCatKeyItemKey('system','facebook_pass'); $secret=$row['value']; <= Correct secret key $facebook = new Facebook(array( 'appId' => $apiid, 'secret' => $secret, 'cookie' => true, )); $session = $facebook->getSession(); $me = null; if ($session) { try { $uid = $facebook->getUser(); $me = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); } $message=$data['facebook_text']; $attachment = array( 'message' => $data['facebook_text'], 'name' => $data['name'], 'link' => $this->getLinkToLatestNews(), 'description' => '', ); try { $facebook->api('/PAGE ID/feed/', 'post', $attachment); $result = "Facebook: Sent"; } catch (FacebookApiException $e) { $result = "Facebook: Failed"; error_log($e); } } else { $login_url = $facebook->getLoginUrl(); header("Location: ".$login_url); exit; } echo $result; exit; //return $result; }
Что я делаю неправильно? Я не смог найти ничего в документации API / top google, только для JS. Спасибо за помощь!
Вам нужно будет убедиться, что вы запрашиваете разрешение «manage_pages» для пользователя. Как только вы получите это, вы можете сделать $facebook->api('/me/accounts')
и вы получите ответную марку (вместе с информацией о странице), которую вы можете использовать для публикации на странице в качестве страницы.
Я боролся с этим большую часть дня, а затем обнаружил, что не использовать setAccessToken (page_access_token) было единственной вещью, которая мешала мне работать для меня. Я обнаружил это в post stackflow от 18 месяцев назад. Я поставлю свое решение здесь, для тех, у кого есть этот вопрос в будущем:
protected $scope = "email,publish_stream,manage_pages"; $url = "{$api_url}/{$fbusername}/accounts?access_token=".$access_token; $response = json_decode(file_get_contents($url)); foreach($response->data as $data) { try { $res = $this->SDK->setAccessToken($data->access_token); $res = $this->SDK->api( "{$data->id}/feed", "POST", array('link' => 'www.example.com', 'message' => 'This is a test message from php',) ); log::debug(__FUNCTION__, print_r($res,true)); } catch (Exception $e) { log::debug(__FUNCTION__, $e->getType().": ".$e->getMessage()); } }