Проводка в 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(токен)
@graph.put_connections("me", "feed",:message => "Мое сообщение!")

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

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

2 ответа

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

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

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

 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.

Другие вопросы по тегам