Class: Google::APIClient::InstalledAppFlow
- Inherits:
-
Object
- Object
- Google::APIClient::InstalledAppFlow
- Defined in:
- lib/google/api_client/auth/installed_app.rb
Overview
Small helper for the sample apps for performing OAuth 2.0 flows from the command line or in any other installed app environment.
Constant Summary collapse
- RESPONSE_BODY =
<<-HTML <html> <head> <script> function closeWindow() { window.open('', '_self', ''); window.close(); } setTimeout(closeWindow, 10); </script> </head> <body>You may close this window.</body> </html> HTML
Instance Method Summary collapse
-
#authorize(storage = nil) ⇒ Signet::OAuth2::Client
Request authorization.
-
#initialize(options) ⇒ InstalledAppFlow
constructor
Configure the flow.
Constructor Details
#initialize(options) ⇒ InstalledAppFlow
Configure the flow
68 69 70 71 72 73 74 75 |
# File 'lib/google/api_client/auth/installed_app.rb', line 68 def initialize() @port = [:port] || 9292 @authorization = Signet::OAuth2::Client.new({ :authorization_uri => 'https://accounts.google.com/o/oauth2/auth', :token_credential_uri => 'https://accounts.google.com/o/oauth2/token', :redirect_uri => "http://localhost:#{@port}/"}.update() ) end |
Instance Method Details
#authorize(storage = nil) ⇒ Signet::OAuth2::Client
Request authorization. Opens a browser and waits for response.
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/google/api_client/auth/installed_app.rb', line 86 def (storage=nil) auth = @authorization server = WEBrick::HTTPServer.new( :Port => @port, :BindAddress =>"localhost", :Logger => WEBrick::Log.new(STDOUT, 0), :AccessLog => [] ) begin trap("INT") { server.shutdown } server.mount_proc '/' do |req, res| auth.code = req.query['code'] if auth.code auth.fetch_access_token! end res.status = WEBrick::HTTPStatus::RC_ACCEPTED res.body = RESPONSE_BODY server.stop end Launchy.open(auth..to_s) server.start ensure server.shutdown end if @authorization.access_token if storage.respond_to?(:write_credentials) storage.write_credentials(@authorization) end return @authorization else return nil end end |