ruby-on-rails - 如何配置oauth回调的路由

标签 ruby-on-rails ruby

我正在使用 gem OAuth2与 Google 服务进行通信。我不明白如何实现回调,该回调接收带有 OAuth 代码的响应以获取访问 token 。当我在回调方法中设置断点时,它似乎永远不会被调用。

这是我的代码:

路线:

match '/oauth2/callback' => 'reports#callback'

实际重定向的网址:

http://localhost/oauth2/callback?code=111111  

报告 Controller :

def new
 client = OAuth2::Client.new(ENV['GA_CLIENT_ID'], ENV['GA_SECRET_KEY'], {
         :authorize_url => 'https://accounts.google.com/o/oauth2/auth',
         :token_url => 'https://accounts.google.com/o/oauth2/token'
    })
redirect_to client.auth_code.authorize_url({
        :scope => 'https://www.googleapis.com/auth/analytics.readonly',
        :redirect_uri => 'http://localhost/oauth2/callback',
        :access_type => 'offline'
    }) 
end

def callback
  oauth_code = params[:code]

  # Create access token with oauth_code
end

最佳答案

Google 服务器正在尝试访问此无效网址 http://localhost/oauth2/callback?code=111111

您需要域名才能使用 OAuth 等服务,因为 Google 服务器必须能够通过互联网找到您的计算机。

为了能够在您的开发机器上执行此操作,您应该:

  1. 在已知的 DNS 服务器上设置名称:最简单的方法是通过动态 DNS 服务器,例如 dyndnsno-ip

  2. 如果您位于使用 NAT 的路由器后面,您可能需要将请求重定向到计算机端口 80 上的调制解调器:如果您不这样做如果不这样做,您的调制解调器将在端口 80 上收到来自 google 的数据包,并会说“不适合我”,然后将其丢弃。您可以在调制解调器菜单中执行此操作 - 查找端口转发或 NAT 部分。

关于ruby-on-rails - 如何配置oauth回调的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16864199/

相关文章:

ruby-on-rails - ruby rails 2.3.8 : Been having trouble getting testing things to work

ruby-on-rails - RVM:指定要使用的 ruby 版本

ruby-on-rails - Rails 3 中的 ExecJS::RuntimeError

ruby - 运行时错误 : -ERR Unknown Command running redis gem on Ruby

ruby-on-rails - 回形针 gem 渲染头像在不同 View 中上传

ruby-on-rails - 如何在 Rails 4 中设置自定义字符串外键?

ruby-on-rails - 是否可以让 ActiveRecord 为使用 :joins option? 加载的行创建对象

ruby-on-rails - 如何将多个 Controller 与一个模型一起使用?

ruby-on-rails - Geocoding API 的响应不是有效的 JSON。和 request.location = nil

Ruby解析JSON.load和YAML.load生成不同的 key 类型