Class: SparkApi::Authentication::OAuth2Impl::GrantTypeCode

Inherits:
GrantTypeBase
  • Object
show all
Defined in:
lib/spark_api/authentication/oauth2_impl/grant_type_code.rb

Overview

OAuth2 authentication flow using username and password parameters for the user in the request. This implementation is geared towards authentication styles for web applications that have a OAuth flow for redirects.

Constant Summary

Constants inherited from GrantTypeBase

SparkApi::Authentication::OAuth2Impl::GrantTypeBase::GRANT_TYPES

Instance Attribute Summary

Attributes inherited from GrantTypeBase

#client, #provider, #session

Instance Method Summary collapse

Methods inherited from GrantTypeBase

create

Constructor Details

#initialize(client, provider, session) ⇒ GrantTypeCode

Returns a new instance of GrantTypeCode.



8
9
10
# File 'lib/spark_api/authentication/oauth2_impl/grant_type_code.rb', line 8

def initialize(client, provider, session)
  super(client, provider, session)
end

Instance Method Details

#authenticateObject



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/spark_api/authentication/oauth2_impl/grant_type_code.rb', line 11

def authenticate
  if(provider.code.nil?)
    SparkApi.logger.debug { "[oauth2] No authoriztion code present. Redirecting to #{authorization_url}." }
    provider.redirect(authorization_url)
  end
  if needs_refreshing?
    new_session = refresh
  end
  return new_session unless new_session.nil?
  create_session(token_params)
end

#refreshObject



23
24
25
26
27
28
29
30
31
# File 'lib/spark_api/authentication/oauth2_impl/grant_type_code.rb', line 23

def refresh()
  SparkApi.logger.debug { "[oauth2] Refresh oauth session." }
  refresher = GrantTypeRefresh.new(client,provider,session)
  refresher.params = {"redirect_uri" => @provider.redirect_uri}
  refresher.authenticate
rescue ClientError => e
  SparkApi.logger.info { "[oauth2] Refreshing token failed, the library will try and authenticate from scratch: #{e.message}" }
  nil
end