2013-10-07 4 views
0

Я хочу сделать сообщение в facebook один раз в день, используя рубиновый скрипт и камень Koala. Я хочу, чтобы иметь возможность настроить его один раз и не нужно постоянно менять доступ к ним. После прочтения некоторых постов и Facebook documentation around Access Tokens я реализовал следующие:Публикация на FB с использованием Graph API

  • Создано Facebook App
  • использовал Graph API Explorer, чтобы получить маркер доступа для себя - это только длится около 2 часов
  • Используется следующий сценарий для обмена короткого срока фишки в течение длительного срока токена, который длится 2 месяц
 
https://graph.facebook.com/oauth/access_token?    
    client_id=APP_ID& 
    client_secret=APP_SECRET& 
    grant_type=fb_exchange_token& 
    fb_exchange_token=EXISTING_ACCESS_TOKEN 
  • Написал следующая задача грабли отправлять сообщения в Facebook стене
 
token = "CAAFlZAPhVBO8..." 
@graph = Koala::Facebook::API.new(token) 
@graph.put_connections("me", "feed", :message => "My message!") 
  • Запланированные команды грабли, используя heroku scheduler

со всей этой установки, мой сценарий на самом деле работает! Он пишет на мою стену каждый день на основе планировщика.

Мой вопрос:: с этой настройкой мне придется вручную перейти и создать новый кратковременный токен доступа с помощью графического api explorer, а затем использовать его для получения токена долгосрочного доступа каждые два месяца. Кроме того, мне придется зайти и вручную изменить выражение token = "blah blah" в y скрипте. Можно ли вообще этого избежать? Я дал приложение, которое я создал для разрешения на мою стену. Есть ли способ автоматически получить новые токены доступа в скрипте, используя Koala (или другие драгоценные камни/библиотеки)?

ответ

0

После того, как пользователь предоставил разрешение на использование вашего приложения publish_actions, вы также можете использовать токен доступа к приложениям для публикации настенных сообщений в их имени - вам просто нужно будет обменять me на фактический идентификатор пользователя (поскольку без токена доступа пользователя API не может знать, кто «я» должен быть).

И комбинация app_id|app_secret (символ трубы посередине) может служить токеном доступа к приложениям.

0

Вы можете автоматизировать и не жестко кодировать краткосрочный токен. Для автоматизации входа в систему omniauth можно использовать омняут-facebook gem. См. Github. Добавьте это в свой gemfile.

gem 'omniauth-facebook', '1.4.0' 

В конфигурации маршрутов, сопоставьте обратного вызова

match '/auth/:provider/callback' => '[your controller]#[your function]' 

После входа в систему успешно и земли на функцию обратного вызова, то маркер хранится в ответ на request.env["omniauth.auth"]["credentials"]["token"]

Используйте этот маркер и обменивайте его на долгоживущий токен каждый раз, когда пользователь входит в систему. Можно смело предположить, что пользователь регистрируется, по крайней мере, дважды в течение 60 дней для долговременного токена доступа.

Я предполагаю, что вы используете Ruby on Rails, потому что используете камень Koala.

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

  • Нет связанных вопросов^_^