Ruby HTTPRequest需要60秒以上的时间来访问facebook oauth服务器

时间:2017-01-16 22:03:53

标签: ruby-on-rails ruby facebook facebook-graph-api oauth

我试图建立一个手动的oauth流程来通过facebook签署我的用户,非常标准的票价。

我有重定向正常工作,它将代码发送到我的回调函数。然后我必须用facebook交换我的代码以获取access_token。如果它不完全超时,则需要60秒以上。我之前已多次完成相同的功能并且没有任何问题。其他网站会立即响应,而Facebook由于某种原因需要60秒以上。请记住,在我的生产服务器的rails控制台中运行的相同代码会立即生效。如果我通过curl做同等的请求,它也会立即生效。此问题仅发生在我本地计算机上的Rails控制台中。我使用RestClient和HTTParty测试并得到了相同的结果。

url = "https://graph.facebook.com/v2.8/oauth/access_token?client_id=#{CLIENT_ID}&redirect_uri=http://127.0.0.1:3000/facebook_oauth_redirect&client_secret=#{CLIENT_SECRET}&code={#CODE}"
response = RestClient.get(url, :content_type => 'application/json', :accept => :json)

我无法弄清楚出了什么问题。我怀疑可能使用SSL,但我可以从其他https网站获得响应而没有问题。我把它归结为TCPSocket本身需要60多秒才能打开。

s = TCPSocket.new 'graph.facebook.com', 443

这需要大约75秒才能打开,而其他网站只有一小部分时间。我的同事证实他可以立即打开TCPSocket。我现在都没有想法,所以欢迎任何建议。

编辑:似乎问题可能是我几周前发布的新无线路由器。我将我的Mac连接到我的iPhone热点,它立即工作。

1 个答案:

答案 0 :(得分:0)

解决方案最终成为我的无线路由器或调制解调器,并不完全确定是什么。几周前我升级了钱就在路由器上了。

电源循环没有帮助,所以我欺骗了MAC地址,这似乎解决了电源循环后的问题。

不确定是什么问题考虑到浏览器/ curl中的所有内容都运行良好,问题只是rails控制台(修改了欺骗)。