2014-03-27 76 views
2

我正在构建一个Web应用程序,需要使用Oauth2访问用户gmail。我注册了我的应用程序,可以获取最初的代码,但无法弄清楚如何获取访问令牌并在之后刷新代码。Rails:Google OAUTH2,正确发送邮件请求

首先,用户被发送到一个安全的谷歌页面,把用户名/密码。随后,谷歌将用户重定向到这样的:

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

您的重定向URI必须完全匹配,用户被重定向到。在你的情况下,这是127.0.0.1/oauth2callback没有:3000。然而,我相信对于谷歌来说,这两个URI不必相同,但至少在开发者控制台中定义,所以也许你可以尝试在你的developer console中加入127.0.0.1:3000/oauth2callback