oauth2.0 - Rails: Google OAUTH2,正确发送post请求



我正在构建一个web应用程序,需要使用Oauth2访问用户的gmail。我注册了我的应用程序,可以获得初始代码,但不知道如何获得访问令牌和刷新代码之后。

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

127.0.0.1/oauth2callback吗?代码= 4/ux5gNj -_mIu4DOD_gNZdjX9E

我有下面这个方法来处理重定向。该代码与其他信息一起在post请求中发送回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

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

然而,我相信,对于谷歌这两个uri不需要是相同的,但至少在开发者控制台定义,所以也许你可以尝试添加127.0.0.1:3000/oauth2callback到你的开发者控制台。

相关内容

  • 没有找到相关文章

最新更新