mirror of
https://github.com/omniauth/omniauth.git
synced 2022-11-09 12:31:49 -05:00
added Gowalla support
This commit is contained in:
parent
712f4b600d
commit
67ede42fbe
3 changed files with 74 additions and 0 deletions
|
@ -11,5 +11,6 @@ module OmniAuth
|
|||
autoload :GitHub, 'omniauth/strategies/github'
|
||||
autoload :ThirtySevenSignals, 'omniauth/strategies/thirty_seven_signals'
|
||||
autoload :Foursquare, 'omniauth/strategies/foursquare'
|
||||
autoload :Gowalla, 'omniauth/strategies/gowalla'
|
||||
end
|
||||
end
|
||||
|
|
60
oa-oauth/lib/omniauth/strategies/gowalla.rb
Normal file
60
oa-oauth/lib/omniauth/strategies/gowalla.rb
Normal file
|
@ -0,0 +1,60 @@
|
|||
require 'omniauth/oauth'
|
||||
require 'multi_json'
|
||||
|
||||
module OmniAuth
|
||||
module Strategies
|
||||
#
|
||||
# Authenticate to Gowalla utilizing OAuth 2.0 and retrieve
|
||||
# basic user information.
|
||||
#
|
||||
# Usage:
|
||||
#
|
||||
# use OmniAuth::Strategies::Gowalla, 'API Key', 'Secret Key'
|
||||
#
|
||||
# Options:
|
||||
#
|
||||
# <tt>:scope</tt> :: Extended permissions such as <tt>email</tt> and <tt>offline_access</tt> (which are the defaults).
|
||||
class Gowalla < OAuth2
|
||||
def initialize(app, api_key, secret_key, options = {})
|
||||
options[:site] = 'https://api.gowalla.com/api/oauth'
|
||||
options[:authorize_url] = 'https://gowalla.com/api/oauth/new'
|
||||
options[:access_token_url] = 'https://api.gowalla.com/api/oauth/token'
|
||||
super(app, :gowalla, api_key, secret_key, options)
|
||||
end
|
||||
|
||||
def user_data
|
||||
@data ||= MultiJson.decode(@access_token.get("/users/me.json"))
|
||||
end
|
||||
|
||||
def request_phase(options = {})
|
||||
options[:scope] ||= "email,offline_access"
|
||||
super(options)
|
||||
end
|
||||
|
||||
def user_info
|
||||
{
|
||||
'name' => "#{user_data['first_name']} #{user_data['last_name']}",
|
||||
'nickname' => user_data["username"],
|
||||
'first_name' => user_data["first_name"],
|
||||
'last_name' => user_data["last_name"],
|
||||
'location' => user_data["hometown"],
|
||||
'description' => user_data["bio"],
|
||||
'image' => user_data["image_url"],
|
||||
'phone' => nil,
|
||||
'urls' => {
|
||||
'Gowalla' => "http://www.gowalla.com/#{user_data['url']}",
|
||||
'Website' => user_data["website"]
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
def auth_hash
|
||||
OmniAuth::Utils.deep_merge(super, {
|
||||
'uid' => user_data["url"].split('/').last,
|
||||
'user_info' => user_info,
|
||||
'extra' => {'user_hash' => user_data}
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
13
oa-oauth/spec/omniauth/strategies/gowalla_spec.rb
Normal file
13
oa-oauth/spec/omniauth/strategies/gowalla_spec.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
||||
|
||||
describe OmniAuth::Strategies::Gowalla do
|
||||
|
||||
it 'should subclass OAuth2' do
|
||||
OmniAuth::Strategies::Gowalla.should < OmniAuth::Strategies::OAuth2
|
||||
end
|
||||
|
||||
it 'should initialize with just api key and secret key' do
|
||||
lambda{OmniAuth::Strategies::Gowalla.new({},'api_key','secret_key')}.should_not raise_error
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in a new issue