ruby-on-rails - omn​​iauth 回调的长时间延迟

标签 ruby-on-rails ruby-on-rails-3 omniauth thin

OmniAuth(Facebook 和 LinkedIn)为我工作了几个月。

在没有任何代码更改的情况下,我开始看到来自 Facebook/LinkedIn 的回调有很长的延迟。

现在大约需要 40 秒:

Started GET "/auth/facebook/callback?state=e600c4acbb0e10f40....

到:

Processing by AuthenticationsController#create as HTML....

我看到了an issue对此,但没有任何解决方案对我有用。

有人看到了吗?我该如何解决这个问题/弄清楚发生了什么?

--编辑 1--

我用 curl 运行流程,发现调用 Facebook 需要很长时间:

time curl --data "grant_type=authorization_code&client_id=[MY CLINET ID]&client_secret=[MY CLIENT SECRET]&redirect_uri=[MY REDIRECT URI]&code=[THE CODE I GOT]" https://graph.facebook.com/oauth/access_token
>> access_token=AAAA....ZDZD&expires=5183693
real 0m20.459s
user 0m0.004s
sys 0m0.008s

time curl -H "Authorization: Bearer AAAA....ZDZD" https://graph.facebook.com/me
>> {....}
real 0m20.706s
user 0m0.012s
sys 0m0.008s

--编辑 2--

似乎每次使用 curl 调用都比应有的时间多 20 秒。我试过谷歌:

time curl http://www.google.com
>> <HTML>....</HTML>

real    0m20.253s
user    0m0.012s
sys 0m0.004s

但是当我尝试使用 IP 时:

time curl http://173.194.44.17
>> <HTML>....</HTML>

real    0m0.647s
user    0m0.012s
sys 0m0.000s

我在某些网站上发现这可能与 DNS 解析速度慢有关。同一台机器上的浏览器似乎工作正常。

有什么想法吗?

最佳答案

我找到了解决方案。这是一个本地问题,与 Ubuntu 12.04 中的 DNS 解析缓慢有关,这是一个已知问题。为我解决问题的是将我的系统配置为使用 google DNS 而不是自动配置。

关于ruby-on-rails - omn​​iauth 回调的长时间延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14603978/

相关文章:

ruby-on-rails - Rails 生成错误的复数形式

ruby-on-rails - Ruby selenium webdriver 无法找到 Mozilla geckodriver

ruby-on-rails - ruby rails 3 : How to access an attribute of each record in a has_many query

mysql - 为了 Heroku,从 MySQL 切换到 PostgreSQL for Ruby on Rails

ruby-on-rails - 在 Rails 中,无法为 {"adapter"= >"postgresql"创建数据库,

ruby-on-rails - 在 Devise on Rails 中使用单独的身份验证模型

ruby-on-rails - omn​​iauth-facebook 无法获取电子邮件地址

ruby-on-rails - 使用 Rails 实现 facebook-OmniAuth

ruby-on-rails - rails : Basic Authentication with Authlogic

ruby-on-rails-3 - RSpec:最简单的测试失败并出现错误:预期 block 返回真值