Rails3.1でTwitter認証しTwitter APIを呼び出す
Gemfile
gem 'devise'
gem 'omniauth'
gem 'twitter'
config/initialisers/devise.rb
Devise.setup do |config|
config.omniauth :twitter, 'CONSUMER KEY', 'CONSUMER SECRET'
end
config/initializers/twitter.rb
Twitter.configure do |config|
config.consumer_token = Devise.omniauth_configs[:twitter].args.first
config.consumer_secret = Devise.omniauth_configs[:twitter].args.last
end
app/models/user.rb
class User < ActiveRecord::Base
devise :omniauthable
attr_accessor :client
def follower_ids
set_client
@client.follower_ids.ids
end
private
def set_client
@client = Twitter.new(oauth_token: token, oauth_token_secret: secret)
end
end
補足:コントローラーでAPIを呼び出して結果をmemcachedにキャッシュする
Gemfile
gem 'devise'
gem 'omniauth'
gem 'twitter'
gem 'dalli'
config/environments/production.rb
SampleApp::Application.configure do
config.cache_store = :dalli_store
end
app/controllers/users_controller.rb
class UsersController < ApplicationController
def index
follower_ids = Rails.cache.fetch("#{current_user.name}_follower_ids") { current_user.follower_ids }
# ...
end
end