ROR - 已启动Google OAuth2回调阶段,然后超时

时间:2017-03-10 06:15:20

标签: ruby-on-rails youtube-api google-oauth2 faraday

oAuth进程在Heroku上工作正常,但我不能让它在本地工作。我的应用程序通过oAuth进程发送用户,但回调从未进入控制器(通过在应该到达的控制器的create方法中放置一个pry来测试)。奇怪的是,它过去常常在本地工作。我甚至还没回到工作无效的时候。任何帮助将不胜感激!

编辑:我创建了一个全新的应用程序,存在同样的问题。这必须与我的电脑/网络有关。有什么想法吗?

终端

Started GET "/auth/google_oauth2" for ::1 at 2017-03-09 22:38:58 -0700
I, [2017-03-09T22:38:58.613208 #40471]  INFO -- omniauth:(google_oauth2) Request phase initiated.
Started GET "/auth/google_oauth2/callback?state=abunchofrandomnumbers&code=morerandomnumbers" for ::1 at 2017-03-09 22:38:59 -0700
I, [2017-03-09T22:38:59.492677 #40471]  INFO -- omniauth: (google_oauth2) Callback phase initiated.

Faraday::ConnectionFailed (execution expired)

配置/初始化/ omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, ENV['youtube_id'], ENV['youtube_secret'], scope: 'userinfo.profile,youtube'
end

的routes.rb

get '/auth/:provider/callback', to: 'youtube_users#create'

的Gemfile

gem 'rails', '~> 5.0.1'
gem 'pg', '~> 0.18'
gem 'puma', '~> 3.0'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jquery-rails'
gem 'jbuilder', '~> 2.5'
gem 'bcrypt', '~> 3.1.7'
gem 'figaro'
gem 'faraday'
gem 'bootstrap-sass'
gem 'yt'
gem 'omniauth-google-oauth2'
gem 'rails-html-sanitizer'
gem 'bootstrap_form'

Google Dev Console证书

Origin: http://localhost:3000
Redirect URI: http://localhost:3000/auth/google_oauth2/callback

Image of errors in browser

development.log

Started GET "/auth/google_oauth2" for ::1 at 2017-03-12 00:45:13 -0700
(google_oauth2) Request phase initiated.
Started GET "/auth/google_oauth2/callback?state=ecc60cda112ce1f74a28318ac2f2e148debe8afde204d307&code=4/9aFUvRVFluC7fwiDXkstbjZVoiWj684ViSbObLIfSsQ" for ::1 at 2017-03-12 00:45:16 -0700
(google_oauth2) Callback phase initiated.

Faraday::ConnectionFailed (execution expired):

/Users/brad/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:880:in `initialize'
/Users/brad/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:880:in `open'
/Users/brad/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:880:in `block in connect'
/Users/brad/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/timeout.rb:101:in `timeout'
/Users/brad/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:878:in `connect'
/Users/brad/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:863:in `do_start'
/Users/brad/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:852:in `start'
/Users/brad/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:1398:in `request'
faraday (0.11.0) lib/faraday/adapter/net_http.rb:80:in `perform_request'
faraday (0.11.0) lib/faraday/adapter/net_http.rb:38:in `block in call'
faraday (0.11.0) lib/faraday/adapter/net_http.rb:85:in `with_net_http_connection'
faraday (0.11.0) lib/faraday/adapter/net_http.rb:33:in `call'
faraday (0.11.0) lib/faraday/request/url_encoded.rb:15:in `call'
faraday (0.11.0) lib/faraday/rack_builder.rb:139:in `build_response'
faraday (0.11.0) lib/faraday/connection.rb:377:in `run_request'
oauth2 (1.3.1) lib/oauth2/client.rb:99:in `request'
oauth2 (1.3.1) lib/oauth2/client.rb:146:in `get_token'
oauth2 (1.3.1) lib/oauth2/strategy/auth_code.rb:30:in `get_token'
omniauth-google-oauth2 (0.4.1) lib/omniauth/strategies/google_oauth2.rb:107:in `custom_build_access_token'
omniauth-oauth2 (1.4.0) lib/omniauth/strategies/oauth2.rb:73:in `callback_phase'
omniauth (1.6.1) lib/omniauth/strategy.rb:230:in `callback_call'
omniauth (1.6.1) lib/omniauth/strategy.rb:187:in `call!'
omniauth (1.6.1) lib/omniauth/strategy.rb:167:in `call'
omniauth (1.6.1) lib/omniauth/builder.rb:63:in `call'
rack (2.0.1) lib/rack/etag.rb:25:in `call'
rack (2.0.1) lib/rack/conditional_get.rb:25:in `call'
rack (2.0.1) lib/rack/head.rb:12:in `call'
rack (2.0.1) lib/rack/session/abstract/id.rb:222:in `context'
rack (2.0.1) lib/rack/session/abstract/id.rb:216:in `call'
actionpack (5.0.2) lib/action_dispatch/middleware/cookies.rb:613:in `call'
activerecord (5.0.2) lib/active_record/migration.rb:553:in `call'
actionpack (5.0.2) lib/action_dispatch/middleware/callbacks.rb:38:in `block in call'
activesupport (5.0.2) lib/active_support/callbacks.rb:97:in `__run_callbacks__'
activesupport (5.0.2) lib/active_support/callbacks.rb:750:in `_run_call_callbacks'
activesupport (5.0.2) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.2) lib/action_dispatch/middleware/callbacks.rb:36:in `call'
actionpack (5.0.2) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.2) lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
actionpack (5.0.2) lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call'
web-console (3.4.0) lib/web_console/middleware.rb:135:in `call_app'
web-console (3.4.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (3.4.0) lib/web_console/middleware.rb:18:in `catch'
web-console (3.4.0) lib/web_console/middleware.rb:18:in `call'
actionpack (5.0.2) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
railties (5.0.2) lib/rails/rack/logger.rb:36:in `call_app'
railties (5.0.2) lib/rails/rack/logger.rb:24:in `block in call'
activesupport (5.0.2) lib/active_support/tagged_logging.rb:69:in `block in tagged'
activesupport (5.0.2) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (5.0.2) lib/active_support/tagged_logging.rb:69:in `tagged'
railties (5.0.2) lib/rails/rack/logger.rb:24:in `call'
sprockets-rails (3.2.0) lib/sprockets/rails/quiet_assets.rb:13:in `call'
actionpack (5.0.2) lib/action_dispatch/middleware/request_id.rb:24:in `call'
rack (2.0.1) lib/rack/method_override.rb:22:in `call'
rack (2.0.1) lib/rack/runtime.rb:22:in `call'
actionpack (5.0.2) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.2) lib/action_dispatch/middleware/static.rb:136:in `call'
rack (2.0.1) lib/rack/sendfile.rb:111:in `call'
railties (5.0.2) lib/rails/engine.rb:522:in `call'
puma (3.8.1) lib/puma/configuration.rb:224:in `call'
puma (3.8.1) lib/puma/server.rb:590:in `handle_request'
puma (3.8.1) lib/puma/server.rb:425:in `process_client'
puma (3.8.1) lib/puma/server.rb:289:in `block in run'
puma (3.8.1) lib/puma/thread_pool.rb:120:in `block in spawn_thread'
  Rendering /Users/brad/.rvm/gems/ruby-2.3.0/gems/actionpack-5.0.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout
  Rendering /Users/brad/.rvm/gems/ruby-2.3.0/gems/actionpack-5.0.2/lib/action_dispatch/middleware/templates/rescues/_source.html.erb
  Rendered /Users/brad/.rvm/gems/ruby-2.3.0/gems/actionpack-5.0.2/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (4.1ms)
  Rendering /Users/brad/.rvm/gems/ruby-2.3.0/gems/actionpack-5.0.2/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
  Rendered /Users/brad/.rvm/gems/ruby-2.3.0/gems/actionpack-5.0.2/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (4.9ms)
  Rendering /Users/brad/.rvm/gems/ruby-2.3.0/gems/actionpack-5.0.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
  Rendered /Users/brad/.rvm/gems/ruby-2.3.0/gems/actionpack-5.0.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.7ms)
  Rendered /Users/brad/.rvm/gems/ruby-2.3.0/gems/actionpack-5.0.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (95.2ms)

1 个答案:

答案 0 :(得分:0)

您可能需要先检查是否已在开发人员控制台中指定了localhost端口并添加了/oauth2callback,如下图所示。看看它是否有效。

enter image description here

否则,请查看OpenID Connect的完整文档,其中The Discovery document中提到了:

  

OpenID Connect协议要求使用多个端点对用户进行身份验证,并请求包括令牌,用户信息和公钥在内的资源。

     

为了简化实施并提高灵活性,OpenID Connect允许使用"发现文档,"在包含键值对的知名位置找到的JSON文档,该键值对提供有关OpenID Connect提供程序配置的详细信息,包括authorizationtoken,{{1}的URI }和userinfo

有了这个,您可能还想使用此GitHub post中给出的以下配置:

public-keys endpoints

希望有所帮助