我正在构建一个需要使用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
答案 0 :(得分:1)
你的重定向uri必须完全匹配,用户被重定向到。在您的情况下,127.0.0.1/oauth2callback
没有:3000
。
但是,我认为对于谷歌而言,两者都不必相同,但至少在开发者控制台中定义,所以也许你可以尝试将127.0.0.1:3000/oauth2callback
添加到你的{{3} }}