A little tip, as this took some hunting around.
So you’ve added Twitter login via Devise. How do you then make signed Twitter calls on behalf of authenticated users?
UPDATE: Made a little module for this, at the end of this post.
Your Devise config (initializers/devise.rb) looks like this:
[ruby] config.omniauth :twitter, ‘this-is-my-consumer-id’, ‘this-is-my-consumer-secret’ [/ruby]
To make a Twitter call signed by the user, you’ll need to access that config data. Here’s how:
[ruby] twitter_config = Devise.omniauth_configs[:twitter] consumer_key = twitter_config.strategy.consumer_key consumer_secret = twitter_config.strategy.consumer_secret [/ruby]
Now using twitter-oauth gem, you can make a call like so:
[ruby] t = User.find(‘joe’).user_tokens.where(provider: twitter) twitter = TwitterOAuth::Client.new consumer_key: consumer_key, consumer_secret: consumer_secret, token: t.token, secret: t.secret twitter.search ‘groo’ [/ruby]
You can find the full list of Twitter OAuth API calls in the source.
Here’s a module that does this, which you can mix into User models: