Моя проблема заключалась в том, что пользователь (в данном случае я сам) должен разрешить доступ к моему приложению для публикации на моей стене.
Полный процесс OAuth подробно описан на странице http://developers.facebook.com/docs/authentication/
Но конкретно мне нужно получить URL-адрес, который я должен посетить, а затем сказать «да» на вопрос аутентификации. Код здесь:
@oauth = Koala::Facebook::OAuth.new(app_id, app_secret, callback_url)
@oauth.url_for_oauth_code(:permissions => "publish_actions")
URL-адрес будет выглядеть примерно так:
https://www.facebook.com/dialog/oauth?
client_id={app_id}&
redirect_uri={redirect-uri}&scope=publish_actions
Обратите внимание, в URL-адресе должны быть указаны разрешения, которые вы хотите запросить у пользователя (в данном случае — разрешение на публикацию на стене). Этот запрос на разрешение указывается в переменной «scope». Обратите внимание, что некоторые версии facebook API позволяют публиковать сообщения через область «publish_stream», а другие версии требуют области «publish_actions». Дополнительную информацию о разрешениях, доступных для переменной области, можно найти здесь: https://developers.facebook.com/docs/facebook-login/permissions/v2.0
Когда вы посещаете URL-адрес, сгенерированный из приведенного выше утверждения, Facebook выдаст вам сообщение с вопросом, есть ли у этого конкретного приложения разрешение на публикацию на вашей стене. Вы, конечно, скажете «да». После этого ваше приложение facebook может публиковать сообщения на стене facebook, используя «токен доступа к приложению».
После этого легко разместить сообщение на стене с вашим токеном доступа к приложению. Код, который работает для меня:
@oauth = Koala::Facebook::OAuth.new(app_id, app_secret, callback_url)
@app_access_token = @oauth.get_app_access_token
@graph = Koala::Facebook::API.new(@app_access_token)
foo = @graph.put_connections(facebook_user_id, "feed", :message => "Test message")
person
Steve Quezadas
schedule
09.01.2015