Как веб-приложения публикуют новостные ленты Facebook и уведомления без активности пользователя в приложении FB? - PullRequest
3 голосов
/ 21 сентября 2009

У меня есть существующее веб-приложение Rails, которое я хотел бы интегрировать с Facebook, чтобы, когда пользователь выполняет действия в моем приложении, новостные элементы, содержащие внешние ссылки, позже отправлялись на стену / ленту пользователя демоном, который суммирует последние деятельность. Мне не нужен единый вход и т. Д., Только возможность отправлять обновления.

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

Я работаю над книгой прагматичного программиста Facebook Platform Development Майкла Манино, в которой используется плагин facebooker, и в начале книги говорится:

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

Что считается «активным в приложении» и что это означает в этом контексте? Я видел другие приложения, которые делают такие вещи, как автоматическая публикация RSS-каналов в профиле пользователя, поэтому кажется, что возможно иметь подобные приложения, где единственное взаимодействие - это разовая установка и настройка.

Как работают эти приложения и возможно ли получить эту функциональность от facebooker?

Ответы [ 3 ]

2 голосов
/ 01 февраля 2010
user = session[:facebook_session].user
user.publish_to(user, :message => "action!",
                            :attachment => {:name => "name of attachment",
                                            :href => "http://link.where.attachment.description.should.link.to",
                                            :media => [{:type => "image",
                                                        :src => "http://link.to.where.attachment.is",
                                                        :href => "http://link.where.attachment.description.should.link.to"}]},
                            :action_links => [{:text => 'Action Link Title',
                                               :href => 'http://www.action.link'}])
1 голос
/ 21 сентября 2009

Вы должны запросить у пользователя расширенные права доступа publish_stream. После этого вы сможете публиковать в потоки пользователей, которые добавили ваше приложение и приняли эти расширенные разрешения. http://wiki.developers.facebook.com/index.php/Extended_permissions

Затем используйте Facebooker :: User.publish_to . Также для отправки уведомлений см. Facebooker :: Session.send_notification (для этого не требуется никаких дополнительных разрешений)

Поскольку 99% документации, которую я видел для facebooker и API facebook в целом, похоже, все имеют дело с активными сессиями и многими из них на холсте. На самом деле мало что можно сказать о бэкэнде.

То есть, в основном, с помощью facebooker, так как вы не находитесь на холсте, вы должны создать свои собственные Facebooker :: Session и Facebooker :: User.

fbsession = Facebooker::Session.create(api_key, secret_key)
fbuser = Facebooker::User.new(<Facebooker user id>, fbsession)

#requires "publish_stream" extended permission
fbuser.publish_to(fbuser, :message => "This is a post")

fbsession.send_notification(fbuser.id, "<fb:fbml>some sweet fbml</fb:fbml>")

Надеюсь, это поможет вам.

0 голосов
/ 04 ноября 2009

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

Чтобы получить URL, который пользователь должен щелкнуть, чтобы предоставить доступ publish_stream

facebook_session = Facebooker::Session.create
facebook_session.permission_url('publish_stream')

Чтобы затем опубликовать сообщение в профиле пользователя

facebook_session = Facebooker::Session.create
facebook_session.post 'facebook.stream.publish', :uid => [UID], :message => 'test'

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...