Class: AdsCommon::Auth::OAuth2ServiceAccountHandler
- Inherits:
-
BaseHandler
- Object
- BaseHandler
- AdsCommon::Auth::OAuth2ServiceAccountHandler
- Defined in:
- lib/ads_common/auth/oauth2_service_account_handler.rb
Overview
Credentials class to handle OAuth2 authentication.
Constant Summary collapse
- OAUTH2_CONFIG =
{ :token_credential_uri => 'https://accounts.google.com/o/oauth2/token', :audience => 'https://accounts.google.com/o/oauth2/token' }
Instance Method Summary collapse
-
#auth_string(credentials) ⇒ Object
Generates auth string for OAuth2 service account method of authentication.
-
#get_token(credentials = nil) ⇒ Object
Overrides base get_token method to account for the token expiration.
- #handle_error(error) ⇒ Object
-
#initialize(config, scope) ⇒ OAuth2ServiceAccountHandler
constructor
Initializes the OAuthHandler2 with all the necessary details.
-
#property_changed(prop, value) ⇒ Object
Invalidates the stored token if the required credential has changed.
-
#refresh_token! ⇒ Object
Refreshes access token from refresh token.
Constructor Details
#initialize(config, scope) ⇒ OAuth2ServiceAccountHandler
Initializes the OAuthHandler2 with all the necessary details.
Args:
-
config: Config object with library configuration
-
scope: OAuth authorization scope
44 45 46 47 48 49 50 51 |
# File 'lib/ads_common/auth/oauth2_service_account_handler.rb', line 44 def initialize(config, scope) super(config) @scopes = [] @scopes << scope unless scope.nil? additional_scopes = @config.read('authentication.oauth2_extra_scopes') @scopes += additional_scopes if additional_scopes.is_a?(Array) @client = nil end |
Instance Method Details
#auth_string(credentials) ⇒ Object
Generates auth string for OAuth2 service account method of authentication.
Args:
-
credentials: credentials set for authorization
Returns:
-
Authentication string
75 76 77 78 79 |
# File 'lib/ads_common/auth/oauth2_service_account_handler.rb', line 75 def auth_string(credentials) token = get_token(credentials) return ::Signet::OAuth2.( token[:access_token]) end |
#get_token(credentials = nil) ⇒ Object
Overrides base get_token method to account for the token expiration.
82 83 84 85 86 |
# File 'lib/ads_common/auth/oauth2_service_account_handler.rb', line 82 def get_token(credentials = nil) token = super(credentials) token = refresh_token! if !@client.nil? && @client.expired? return token end |
#handle_error(error) ⇒ Object
60 61 62 63 64 |
# File 'lib/ads_common/auth/oauth2_service_account_handler.rb', line 60 def handle_error(error) # TODO: Add support. get_logger().error(error) raise error end |
#property_changed(prop, value) ⇒ Object
Invalidates the stored token if the required credential has changed.
54 55 56 57 58 |
# File 'lib/ads_common/auth/oauth2_service_account_handler.rb', line 54 def property_changed(prop, value) oauth2_keys = [:oauth2_issuer, :oauth2_secret, :oauth2_keyfile, :oauth2_key] @client = nil if oauth2_keys.include?(prop) end |
#refresh_token! ⇒ Object
Refreshes access token from refresh token.
89 90 91 92 93 94 |
# File 'lib/ads_common/auth/oauth2_service_account_handler.rb', line 89 def refresh_token!() return nil if @token.nil? @client.refresh! @token = token_from_client(@client) return @token end |