Class: Google::Auth::WebUserAuthorizer::CallbackApp

Inherits:
Object
  • Object
show all
Defined in:
lib/googleauth/web_user_authorizer.rb

Overview

Small Rack app which acts as the default callback handler for the app.

To configure in Rails, add to routes.rb:

match '/oauth2callback',
      to: Google::Auth::WebUserAuthorizer::CallbackApp,
      via: :all

With Rackup, add to config.ru:

map '/oauth2callback' do
  run Google::Auth::WebUserAuthorizer::CallbackApp
end

Or in a classic Sinatra app:

get('/oauth2callback') do
  Google::Auth::WebUserAuthorizer::CallbackApp.call(env)
end

Constant Summary collapse

LOCATION_HEADER =
"Location".freeze
REDIR_STATUS =
302
ERROR_STATUS =
500

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.call(env) ⇒ Array

Handle a rack request. Simply stores the results the authorization in the session temporarily and redirects back to to the previously saved redirect URL. Credentials can be later retrieved by calling. Google::Auth::Web::WebUserAuthorizer#get_credentials

See Google::Auth::Web::WebUserAuthorizer#get_authorization_uri for how to initiate authorization requests.

Parameters:

  • env (Hash)

    Rack environment

Returns:

  • (Array)

    HTTP response


264
265
266
267
268
269
270
271
272
# File 'lib/googleauth/web_user_authorizer.rb', line 264

def self.call env
  request = Rack::Request.new env
  return_url = WebUserAuthorizer.handle_auth_callback_deferred request
  if return_url
    [REDIR_STATUS, { LOCATION_HEADER => return_url }, []]
  else
    [ERROR_STATUS, {}, ["No return URL is present in the request."]]
  end
end

Instance Method Details

#call(env) ⇒ Object


274
275
276
# File 'lib/googleauth/web_user_authorizer.rb', line 274

def call env
  self.class.call env
end