Публикация в FB с помощью Graph API

Я хочу публиковать сообщения в Facebook один раз в день, используя скрипт ruby ​​и драгоценный камень Koala. Я хочу иметь возможность настроить его один раз, и мне не нужно постоянно менять токены доступа. После прочтения некоторых сообщений и документации Facebook по токенам доступа я реализовал следующее:

  • Создал приложение для Facebook
  • Использовал 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!")

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

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


person Sarvagya Vaish    schedule 07.10.2013    source источник


Ответы (2)


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

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

person CBroe    schedule 07.10.2013

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

person Lavixu    schedule 11.10.2013