mirror of
https://github.com/omniauth/omniauth.git
synced 2022-11-09 12:31:49 -05:00
45 lines
No EOL
1.3 KiB
Ruby
45 lines
No EOL
1.3 KiB
Ruby
require 'json'
|
|
|
|
module OmniAuth
|
|
module Strategies
|
|
# A convenience wrapper on AuthElsewhere::OAuth to allow you
|
|
# to declare Twitter more simply.
|
|
#
|
|
# Usage:
|
|
#
|
|
# use AuthElsewhere::Twitter, 'consumerkey', 'consumersecret'
|
|
#
|
|
class Twitter < OmniAuth::Strategies::OAuth
|
|
def initialize(app, consumer_key, consumer_secret)
|
|
super(app, :twitter, consumer_key, consumer_secret,
|
|
:site => 'https://api.twitter.com')
|
|
end
|
|
|
|
def auth_hash
|
|
OmniAuth::Utils.deep_merge(super, {
|
|
'uid' => @access_token.params[:user_id],
|
|
'user_info' => user_info,
|
|
'extra' => {'user_hash' => user_hash}
|
|
})
|
|
end
|
|
|
|
def user_info
|
|
user_hash = self.user_hash
|
|
|
|
{
|
|
'nickname' => user_hash['screen_name'],
|
|
'name' => user_hash['name'],
|
|
'location' => user_hash['location'],
|
|
'image' => user_hash['profile_image_url'],
|
|
'screen_name' => user_hash['screen_name'],
|
|
'description' => user_hash['description'],
|
|
'urls' => {'Website' => user_hash['url']}
|
|
}
|
|
end
|
|
|
|
def user_hash
|
|
@user_hash ||= JSON.parse(@access_token.get('/1/account/verify_credentials.json').body)
|
|
end
|
|
end
|
|
end
|
|
end |