2011-07-23 3 views
3

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

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

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

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

Вот то, что я был в состоянии сделать до сих пор. Я создал страницу facebook. Я создал приложение для 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 

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

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

+2

Написал 100% полный учебник о том, как это сделать в моем блоге. http://www.apreche.net/tutorial-programatically-post-a-status-update-to-your-facebook-page/ – Apreche

ответ

3

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

  • У Боба есть страница под названием Awesemo.
  • Bob хочет, чтобы UltraPageManager5000 до управлял своей страницей.
  • Боб переходит на страницу, которая UltraPageManager5000 настроившая, предоставляющую UltraPageManager5000 на manage_pages, publish_stream и 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 
+0

Хорошо, я сделал все это и получил токен доступа для конкретной страницы. Тем не менее, я попытался опубликовать обновление состояния, подобное этому curl -F access_token = "thetoken" -F message = "testing" https://graph.facebook.com/pageid/feed, и он говорит, что пользователь не разрешил приложение для выполнения этого действия. Даже если я дал ему offline_access и manage_pages. – Apreche

+0

неважно, мне также понадобилось разрешение publish_stream. – Apreche

Смежные вопросы