2014-03-27 75 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