Как отправить на страницу Facebook с помощью PHP

Я хотел бы опубликовать на моей собственной странице страницы Facebook с моего сайта, используя PHP.

У меня есть следующее:

  • Приложение Facebook с AppID, AppSecret, ApiKey
  • Страница Facebook с PageID
  • моя собственная учетная запись Facebook – я администратор и создатель приложения и страницы, упомянутых выше.

Например, я пишу запись в блоге, и я хотел бы получить имя, краткое описание и картинку на стене моей страницы Facebook. Или я хотел бы публиковать некоторые статьи на странице Facebook каждый день автоматически в качестве задания cron.

Не могли бы вы дать пошаговое руководство, как это сделать?

Я прочитал эту статью о Facebook Login:
https://developers.facebook.com/docs/facebook-login/
но я до сих пор не знаю, что писать в моем коде.


ОБНОВЛЕНИЕ 1

Вот как я отправляю запрос на токен доступа к приложениям:

$url = 'https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=' .Yii::app()->params['FacebookAppID'] .'&client_secret=' .Yii::app()->params['FacebookSecret']; 

Ответ подобен этому (поддельные символы):

access_token=326584076429|ax3-D39YbpDcR9rMRQn_fMvNu_s

Что такое access_token ? Идентификатор доступа к приложениям? Как получить токен доступа пользователя?

Я попытался использовать токен доступа отсюда:
https://developers.facebook.com/tools/explorer?method=GET&path=me%2Faccounts, но я получил следующее сообщение об ошибке:

Активный токен доступа должен использоваться для запроса информации о текущем пользователе

Итак, как мне получить нужный токен доступа?

ОБНОВЛЕНИЕ 2:

Как я могу получить нужные токены Facebook в своем приложении без какого-либо взаимодействия с клиентом?
Я администратор и создатель Facebook-приложения и Facebook.

Шаг за шагом

  1. Аутентификация пользователя, который является администратором страницы (самостоятельно)
  2. Запросить токен расширенного доступа (чтобы получить 60-дневный сорт, поскольку offline_access отсутствует). См. https://developers.facebook.com/docs/offline-access-deprecation/
  3. Вызовите Graph API me/accounts и выполните поиск по полученному списку, чтобы найти интересующую вас страницу.
  4. Возьмите токен доступа к странице со страницы и начните использовать это для звонков на почту
  5. Возможно, можно получить токен доступа для токена доступа к странице, как описано в шаге 2, пожалуйста, попробуйте сообщить нам, если это можно сделать и для токена доступа к странице.

Вы можете поэкспериментировать с приведенным выше на https://developers.facebook.com/tools/explorer

Счастливое кодирование!

РЕДАКТИРОВАТЬ

Для получения токена доступа без диалогов для любого пользователя вы можете использовать https://developers.facebook.com/tools/access_token/, чтобы получить токен доступа.

шаги:

  1. Запрос Разрешения manage_pages (Разрешить этот процесс):

     https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=manage_pages&response_type=token 
  2. Получить токен доступа из URL:
    Если администратор разрешает это разрешение. Вы должны перенаправить URL-адрес ниже:

     http://YOUR_URL/#access_token=AAABY5jBXQz0BAEzNKkb6FZC22D7aOoKIfFuozIjoOpkGHRJ6SyzBvqx24JGooMc31374EdRFNXkOyLZCBzETRD9vhZAZC8MZD&expires_in=0 

    Используйте токен доступа в URL-адресе, и вы должны получить следующее:

     AAABY5jBXQz0BAEzNKkb6FZC22D7aOoKIfFuozIjoOpkGHRJ6SyzBvqx24JGooMc31374EdRFNXkOyLZCBzETRD9vhZAZC8MZD 
  3. Проверьте токен доступа с помощью Graph API:

     https://graph.facebook.com/me/accounts?access_token=TOKEN_FROM_ABOVE 

    Соединение будет возвращать информацию и токен доступа для каждой страницы.

  4. Внесите его в свой код:
    Вы можете использовать токен доступа к приложениям, вызывая метод API Facebook Graph.

Обновить:
Если вы хотите использовать API-метод в SDK Facebook, DEPRECATED REST API или FQL Query …

Вы должны использовать users_accesstoken следующим образом:

  1. Способ 1:
    Используйте свою учетную запись или пользователей для входа на свою страницу Facebook с разрешениями offline_access и захватите access_token во время успешного входа в систему, используя $facebook->getAccessToken() и сохраните его в базе данных, чтобы вы могли использовать его в любое время.
    Вы можете проверить время истечения срока действия токена здесь , токен с разрешениями offline_access не offline_access кроме случаев, когда пользователь меняет свой пароль или что-то еще.

  2. Способ 2:
    Вы можете динамически обновлять свой access_token используя приведенный ниже код (попрощаться с токеном истечения). Facebook показывает это решение здесь , это пример кода для выполнения запроса FQL:

Код:

 <?php $app_id = 'YOUR_APP_ID'; $app_secret = 'YOUR_APP_SECRET'; $my_url = 'POST_AUTH_URL'; $code = $_REQUEST["code"]; //auth user if(empty($code)) { $dialog_url = 'https://www.facebook.com/dialog/oauth?client_id=' . $app_id . '&redirect_uri=' . urlencode($my_url) ; echo("<script>top.location.href='" . $dialog_url . "'</script>"); } //get user access_token $token_url = 'https://graph.facebook.com/oauth/access_token?client_id=' . $app_id . '&redirect_uri=' . urlencode($my_url) . '&client_secret=' . $app_secret . '&code=' . $code; $access_token = file_get_contents($token_url); 

Попробуйте эту простую функцию для публикации на стене:

 function doWallPost($postName = '', $postMessage = '', $postLink = '', $postCaption = '', $postDescription = '') { $FB_APP_ID = 'xxxxxxxxxxxxxxxxxxxxxxxx'; $FB_APP_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'; $APP_RETURN_URL = ((substr($_SERVER['SERVER_PROTOCOL'], 0, 4) == "HTTP") ? "http://" : "https://") . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']; $code = $_REQUEST["code"]; if (empty($code)) { $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" . $FB_APP_ID . "&redirect_uri=" . $APP_RETURN_URL . "&scope=publish_stream"; header("Location:$dialog_url"); } $token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $FB_APP_ID . "&redirect_uri=" . urlencode($APP_RETURN_URL) . "&client_secret=" . $FB_APP_SECRET . "&code=" . $code; $access_token = file_get_contents($token_url); $param1 = explode("&", $access_token); $param2 = explode("=", $param1[0]); $FB_ACCESS_TOKEN = $param2[1]; $url = "https://graph.facebook.com/me/feed"; $attachment = array( 'access_token' => $FB_ACCESS_TOKEN, 'name' => $postName, 'link' => $postLink, 'description' => $postDescription, 'message' => $postMessage, 'caption' => $postCaption ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment); $result = curl_exec($ch); header('Content-type:text/html'); curl_close($ch); return $result; }