Как сделать пост на странице в фейсбуке? - PullRequest
3 голосов
/ 23 июля 2011

У меня есть страница Facebook на https://www.facebook.com/xxxx и веб-сайт на http://xxxx.com. Как мне обновить статус на странице Facebook, чтобы соответствовать каждой новой публикации на реальном веб-сайте?Это обновление должно быть создано страницей, а не моей личной учетной записью Facebook.

Я знаю, что это может показаться дублирующим вопросом, но выслушайте меня.Я работал над этим часами.Я нашел много помощи по этой теме, но все это неполно или устарело.Большинство ответов говорят мне, что мне нужно сделать, но не как это сделать.

Самое близкое, что я могу найти к тому, что я ищу, - это примечание в официальных документах.

https://developers.facebook.com/docs/opengraph/#publishing

Вот что я смог сделать до сих пор.Я создал страницу в фейсбуке.Я создал приложение для Facebook.Я добавил приложение на страницу.Я добавил приложение в личный кабинет и предоставил ему разрешение manage_pages.Я попытался предоставить ему разрешение manage_pages с точки зрения пользователя страницы, но это не представляется возможным.

Я могу использовать это, чтобы получить ключ доступа для приложения:

curl -s -F grant_type=client_credentials -F client_id=APPID -F client_secret=APPSECRET https://graph.facebook.com/oauth/access_token

Затем я пытаюсь сделать это для фактического обновления статуса.

curl -s -F access_token=ACCESS_TOKEN -F message='test' https://graph.facebook.com/xxxx/feed

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

Как я могу получить правильный ключ доступа, чтобы сделать пост на странице пользователем страницы?Кроме того, как я могу быть уверен, что срок действия ключа доступа не истечет?Как только я получу ключ доступа, как сделать сообщение, чтобы оно отображалось в нужном месте?

1 Ответ

3 голосов
/ 23 июля 2011

Вот как работает разрешение manage_pages.

  • У Боба есть страница под названием Awesemo.
  • Боб хочет, чтобы UltraPageManager5000 управлял его страницей.
  • Боб переходит на страницу, на которой настроен UltraPageManager5000, которая предоставляет UltraPageManager5000 manage_pages, publish_stream*Разрешения 1014 * и offline_access (как в обычном приложении для подключения).Вы должны убедиться, что запрашиваете offline_access, в противном случае срок действия токена истекает.
  • У UltraPageManager5000 теперь есть токен доступа для Боба, но не для его страниц.
  • Теперь, когда UltraPageManager5000 хочетчтобы что-то сделать с одной из его страниц, они переходят на https://graph.facebook.com/uid/accounts/?access_token=bobs_access_token и ищут страницу "Awesome-O", чтобы получить соответствующий токен доступа.

Я создал метод, который немного упростит это для вас.

function get_page_access_token($page_id, $access_token, $user_id) {
    $data = file_get_contents('https://graph.beta.facebook.com/'.$user_id.'/accounts?access_token='.$access_token);
    $pages = json_decode($data,true);
    foreach($pages['data'] as $page) {
      if($page['id'] == $page_id) {
        return $page['access_token']; 
      }   
   }
}

Как только вы получите настоящий токен доступа, следующий HTTP POST фактически создаст статусобновление.

curl -F access_token="the token you got for the page from the command above" \
-F message="the status update you want to post" \
https://graph.facebook.com/PAGE_ID/feed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...