⛳
Twitter連携を複数アプリで行う
想定している用途
twitterログインを利用してユーザーのサインインを行なっている場合
ログインとは別にもう一つTwitter連携(OAuth with the Twitter API)を使いたいユースケースが存在する
前提
Ruby on Railsを使っている
'omniauth', 'omniauth-twitter' のgemを使っている
1つのWebサービスが、複数のアカウントでtwitterサービスと連携する。
要するにtwitterに対して1つのWebサービスが複垢を作るイメージ。
具体的にはどういうユースケースで?
「メールでお知らせ」の代わりにTwitterDMで通知などを利用したい
しかしTwitter連携の権限管理がガバいので、ログイン用の連携で大きな権限を要求したくない
なのでDM通知用のTwitterアプリ連携をもう1つ作ってしまう
なにをやる?
まずサービス名
サービス名は仮に yet_another_twitter としておく。
ログインに使っている方は twitter(デフォルト)
twitterにdeveloperとしてアプリ連携の情報を登録
ログインと同じやり方なのでここで困る人はいないと思うけど・・・
連携情報の取得方法は 公式情報 参照
config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter,
TWITTER_CONSUMER_KEY,
TWITTER_CONSUMER_SECRET
provider OmniAuth::Strategies::Twitter,
別のTWITTER_CONSUMER_KEY,
別のTWITTER_CONSUMER_SECRET
{ name: :yet_another_twitter }
end
coufig/routes.rb
routingを追加
get '/auth/yet_another_twitter/callback', to: 'sessions/yet_another_twitter#callback'
当然SessionControllerにも該当処理を実装すること
認証情報を保管するmodelを作る
以下の3つがあればいいんじゃない?
- uid
- access_token
- access_token_secret
Discussion