Class: OmniAuth::Strategies::OAuth2
- Inherits:
-
Object
- Object
- OmniAuth::Strategies::OAuth2
- Includes:
- OmniAuth::Strategy
- Defined in:
- lib/omniauth/strategies/oauth2.rb
Overview
Authentication strategy for connecting with APIs constructed using the [OAuth 2.0 Specification](tools.ietf.org/html/draft-ietf-oauth-v2-10). You must generally register your application with the provider and utilize an application id and secret in order to authenticate using OAuth 2.0.
Defined Under Namespace
Classes: CallbackError
Instance Attribute Summary collapse
-
#access_token ⇒ Object
Returns the value of attribute access_token.
Instance Method Summary collapse
- #authorize_params ⇒ Object
- #callback_phase ⇒ Object
- #callback_url ⇒ Object
- #client ⇒ Object
- #request_phase ⇒ Object
- #token_params ⇒ Object
Instance Attribute Details
#access_token ⇒ Object
Returns the value of attribute access_token.
27 28 29 |
# File 'lib/omniauth/strategies/oauth2.rb', line 27 def access_token @access_token end |
Instance Method Details
#authorize_params ⇒ Object
49 50 51 |
# File 'lib/omniauth/strategies/oauth2.rb', line 49 def ..merge(..inject({}){|h,k| h[k.to_sym] = [k] if [k]; h}) end |
#callback_phase ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/omniauth/strategies/oauth2.rb', line 57 def callback_phase if request.params['error'] || request.params['error_reason'] raise CallbackError.new(request.params['error'], request.params['error_description'] || request.params['error_reason'], request.params['error_uri']) end self.access_token = build_access_token self.access_token = access_token.refresh! if access_token.expired? super rescue ::OAuth2::Error, CallbackError => e fail!(:invalid_credentials, e) rescue ::MultiJson::DecodeError => e fail!(:invalid_response, e) rescue ::Timeout::Error, ::Errno::ETIMEDOUT => e fail!(:timeout, e) rescue ::SocketError => e fail!(:failed_to_connect, e) end |
#callback_url ⇒ Object
33 34 35 |
# File 'lib/omniauth/strategies/oauth2.rb', line 33 def callback_url full_host + script_name + callback_path end |
#client ⇒ Object
29 30 31 |
# File 'lib/omniauth/strategies/oauth2.rb', line 29 def client ::OAuth2::Client.new(.client_id, .client_secret, deep_symbolize(.)) end |
#request_phase ⇒ Object
45 46 47 |
# File 'lib/omniauth/strategies/oauth2.rb', line 45 def request_phase redirect client.auth_code.({:redirect_uri => callback_url}.merge()) end |
#token_params ⇒ Object
53 54 55 |
# File 'lib/omniauth/strategies/oauth2.rb', line 53 def token_params .token_params.merge(..inject({}){|h,k| h[k.to_sym] = [k] if [k]; h}) end |