簡體   English   中英

使用 omniauth-facebook 登錄 facebook 時執行過期錯誤

[英]Execution expired error with facebook login, using omniauth-facebook

自 7 月 3 日起,用戶無法從 Facebook 登錄。 我正在使用 omniauth-facebook。 我從本地主機成功測試登錄(指向另一個 FB 測試應用程序)。 但在生產中,應用程序顯示此錯誤:

Started GET "/auth/facebook" for 190.238.101.80 at 2019-07-10 17:53:51 -0500
I, [2019-07-10T17:53:51.594796 #4707]  INFO -- omniauth: (facebook) Request phase initiated.
Started GET "/auth/facebook/callback?code=AQAj5FOJuHu7UY656lbwZ4Sfcf_J_ZX9Z_t0wRT-LDfnPLU530zKj5CNGEK53yJ9maNj8O80fWgGmxCq4zWqBK7CPN-ovokGZVIvfY0KaqzNRXWOC20kH4KhkYOHjPyRh4tMYTIcHZ1a0BvHfbBLVolYECVtfD1OKJ2Xob07LCpS0SHNhYc6PA3rBAnb6GnkvOZI-8S7nwXIICdFoKu0BbHd-6L8_Dq-dPFTOpJDSWgmoJUBc65EyCnuw7NCI4IFP1UtxtOmB_QjuzRQV-voQs_SV6N97c2ICK_Qc-IqL_WBwqd54aEzdnW5UOsDV4Wo0jA&state=cee86047aecb4d282b80d33bbd0469815a17d25566167d95" for 190.238.101.80 at 2019-07-10 17:53:52 -0500
I, [2019-07-10T17:53:52.082829 #4707]  INFO -- omniauth: (facebook) Callback phase initiated.

Faraday::ConnectionFailed (execution expired):
  /usr/lib/ruby/2.5.0/net/http.rb:937:in `initialize'
  /usr/lib/ruby/2.5.0/net/http.rb:937:in `open'
  /usr/lib/ruby/2.5.0/net/http.rb:937:in `block in connect'
  /usr/lib/ruby/2.5.0/timeout.rb:103:in `timeout'
  /usr/lib/ruby/2.5.0/net/http.rb:935:in `connect'
  /usr/lib/ruby/2.5.0/net/http.rb:920:in `do_start'
  /usr/lib/ruby/2.5.0/net/http.rb:909:in `start'
  /usr/lib/ruby/2.5.0/net/http.rb:1458:in `request'
  faraday (0.15.4) lib/faraday/adapter/net_http.rb:87:in `perform_request'
  faraday (0.15.4) lib/faraday/adapter/net_http.rb:43:in `block in call'
  faraday (0.15.4) lib/faraday/adapter/net_http.rb:92:in `with_net_http_connection'
  faraday (0.15.4) lib/faraday/adapter/net_http.rb:38:in `call'
  faraday (0.15.4) lib/faraday/request/url_encoded.rb:15:in `call'
  faraday (0.15.4) lib/faraday/rack_builder.rb:143:in `build_response'
  faraday (0.15.4) lib/faraday/connection.rb:387:in `run_request'
  oauth2 (1.4.1) lib/oauth2/client.rb:99:in `request'
  oauth2 (1.4.1) lib/oauth2/client.rb:146:in `get_token'
  oauth2 (1.4.1) lib/oauth2/strategy/auth_code.rb:30:in `get_token'
  omniauth-oauth2 (1.6.0) lib/omniauth/strategies/oauth2.rb:89:in `build_access_token'
  omniauth-facebook (5.0.0) lib/omniauth/strategies/facebook.rb:110:in `build_access_token'
  omniauth-oauth2 (1.6.0) lib/omniauth/strategies/oauth2.rb:73:in `callback_phase'
  omniauth-facebook (5.0.0) lib/omniauth/strategies/facebook.rb:67:in `block in callback_phase'
  omniauth-facebook (5.0.0) lib/omniauth/strategies/facebook.rb:131:in `with_authorization_code!'
  omniauth-facebook (5.0.0) lib/omniauth/strategies/facebook.rb:66:in `callback_phase'
  omniauth (1.9.0) lib/omniauth/strategy.rb:238:in `callback_call'
  omniauth (1.9.0) lib/omniauth/strategy.rb:189:in `call!'
  omniauth (1.9.0) lib/omniauth/strategy.rb:169:in `call'
  omniauth (1.9.0) lib/omniauth/builder.rb:64:in `call'
  rack (1.6.11) lib/rack/etag.rb:24:in `call'
  rack (1.6.11) lib/rack/conditionalget.rb:25:in `call'
  rack (1.6.11) lib/rack/head.rb:13:in `call'
  actionpack (4.2.8) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.2.8) lib/action_dispatch/middleware/flash.rb:260:in `call'
  rack (1.6.11) lib/rack/session/abstract/id.rb:225:in `context'
  rack (1.6.11) lib/rack/session/abstract/id.rb:220:in `call'
  actionpack (4.2.8) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (4.2.8) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.2.8) lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call'
  actionpack (4.2.8) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.2.8) lib/active_support/callbacks.rb:88:in `__run_callbacks__'
  activesupport (4.2.8) lib/active_support/callbacks.rb:778:in `_run_call_callbacks'
  activesupport (4.2.8) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.8) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.2.8) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
  actionpack (4.2.8) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  actionpack (4.2.8) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.8) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.8) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.8) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.2.8) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.2.8) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.2.8) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.2.8) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.6.11) lib/rack/methodoverride.rb:22:in `call'
  rack (1.6.11) lib/rack/runtime.rb:18:in `call'
  activesupport (4.2.8) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  actionpack (4.2.8) lib/action_dispatch/middleware/static.rb:120:in `call'
  rack (1.6.11) lib/rack/sendfile.rb:113:in `call'
  actionpack (4.2.8) lib/action_dispatch/middleware/ssl.rb:24:in `call'
  railties (4.2.8) lib/rails/engine.rb:518:in `call'
  railties (4.2.8) lib/rails/application.rb:165:in `call'
  rack (1.6.11) lib/rack/content_length.rb:15:in `call'
  thin (1.7.2) lib/thin/connection.rb:86:in `block in pre_process'
  thin (1.7.2) lib/thin/connection.rb:84:in `catch'
  thin (1.7.2) lib/thin/connection.rb:84:in `pre_process'
  thin (1.7.2) lib/thin/connection.rb:53:in `process'
  thin (1.7.2) lib/thin/connection.rb:39:in `receive_data'
  eventmachine (1.2.7) lib/eventmachine.rb:195:in `run_machine'
  eventmachine (1.2.7) lib/eventmachine.rb:195:in `run'
  thin (1.7.2) lib/thin/backends/base.rb:73:in `start'
  thin (1.7.2) lib/thin/server.rb:162:in `start'
  rack (1.6.11) lib/rack/handler/thin.rb:19:in `run'
  rack (1.6.11) lib/rack/server.rb:287:in `start'
  railties (4.2.8) lib/rails/commands/server.rb:80:in `start'
  railties (4.2.8) lib/rails/commands/commands_tasks.rb:80:in `block in server'
  railties (4.2.8) lib/rails/commands/commands_tasks.rb:75:in `tap'
  railties (4.2.8) lib/rails/commands/commands_tasks.rb:75:in `server'
  railties (4.2.8) lib/rails/commands/commands_tasks.rb:39:in `run_command!'
  railties (4.2.8) lib/rails/commands.rb:17:in `<top (required)>'
  bin/rails:8:in `require'
  bin/rails:8:in `<main>'

我嘗試使用 localhost 使用 Facebook 創建一個測試應用程序,它可以工作。 我嘗試使用另一個域生產的另一個應用程序,它可以工作。 它不適用於生產中的此特定應用程序。 我給 Facebook 支持發了消息,但他們沒有回復,幾天過去了。

我正在使用 RoR 4.2.8 和 Bundler 1.17.3 我嘗試使用 ruby​​-2.5.1 和 ruby​​-2.3.3 以防萬一(同樣的錯誤)

我嘗試使用另一個具有相同設置的 Facebook 應用程序,使用另一個帶有 ruby​​-2.6 的 RoR v5 應用程序並且它工作正常,所以 FB 應用程序設置似乎沒問題。

我創建了另一個 FB 應用程序,以嘗試使用失敗的 RoR v4.2.8 應用程序,但它以相同的“Faraday::ConnectionFailed (execution expired):”錯誤失敗。

配置/初始化程序/omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, 'APP-ID', 'SECRET',
    scope: 'email'
end

用戶應該可以使用 Facebook 登錄,但失敗並顯示“Faraday::ConnectionFailed(執行已過期):”

從表面上看,您遇到了網絡問題,其中法拉第沒有設置為等待足夠長的響應時間。 我從跟蹤中真正能看出的是,在通往 facebook 和返回的路上的某個地方,您遇到了網絡問題。

我可以考慮檢查幾件事:

  • 如果您的站點通過 HTTPS 運行,請確保您的證書正常工作。
    • 檢查您的 gemfile 是否設置為需要與您的 Rails 版本和依賴項兼容的omniauth-facebook的特定版本。
    • 延長法拉第的超時時間
    • 使用像https://github.com/ooyala/retries這樣的重試 gem 嘗試給網絡足夠的時間在法拉第關閉連接之前做出響應。

其他一些人在 omniauth-facebook 的 github https://github.com/mkdynamic/omniauth-facebook/issues/283 中對此問題發表了評論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM