Rails:Google OAUTH2,正确发送邮件请求

时间:2014-03-27 23:11:09

标签: ruby-on-rails-3 oauth-2.0 gmail http-post

我正在构建一个需要使用Oauth2访问用户gmail的Web应用程序。我注册了我的应用程序,可以获取初始代码,但无法弄清楚如何获取访问令牌并在之后刷新代码。

首先,用户被发送到安全的谷歌页面以输入用户名/密码。之后,谷歌会将用户重定向到以下内容:

127.0.0.1/oauth2callback?code=4/ux5gNj-_mIu4DOD_gNZdjX9E

我在下面使用此方法来处理重定向。代码与发布请求中的其他信息一起发送回Google,以换取访问令牌和刷新代码。不幸的是,底部的反应是空白的。我究竟做错了什么?我是否需要在响应时调用另一个函数来获取访问令牌?

def oauth2callback
  require "uri"
  require "net/http"

  uri = URI.parse("https://accounts.google.com/o/oauth2/token")
  http = Net::HTTP.new(uri.host, uri.port)

  request = Net::HTTP::Post.new(uri.request_uri)
  request.set_form_data(      
  {'code'=>params[:code],
  'client_id' => CLIENT_ID,
  'client_secret' => CLIENT_SECRET,
  'redirect_uri' => '127.0.0.1:3000/oauth2callback',
  'grant_type' => 'authorization_code'})

  http.use_ssl = true
  response = http.request(request)
  #response.body() is blank
end

1 个答案:

答案 0 :(得分:1)

你的重定向uri必须完全匹配,用户被重定向到。在您的情况下,127.0.0.1/oauth2callback没有:3000

但是,我认为对于谷歌而言,两者都不必相同,但至少在开发者控制台中定义,所以也许你可以尝试将127.0.0.1:3000/oauth2callback添加到你的{{3} }}