我正在使用gem OAuth2與Google服務進行通信。我不明白如何實現一個回調,該回調接收用OAuth代碼獲取訪問令牌的響應。當我在callback
方法中設置斷點時,它似乎永遠不會被調用。如何爲oauth回調配置路由
這裏是我的代碼:
路線:
match '/oauth2/callback' => 'reports#callback'
實際的重定向URL:
http://localhost/oauth2/callback?code=111111
ReportsController:
def new
client = OAuth2::Client.new(ENV['GA_CLIENT_ID'], ENV['GA_SECRET_KEY'], {
:authorize_url => 'https://accounts.google.com/o/oauth2/auth',
:token_url => 'https://accounts.google.com/o/oauth2/token'
})
redirect_to client.auth_code.authorize_url({
:scope => 'https://www.googleapis.com/auth/analytics.readonly',
:redirect_uri => 'http://localhost/oauth2/callback',
:access_type => 'offline'
})
end
def callback
oauth_code = params[:code]
# Create access token with oauth_code
end
這是有道理的,但是當我將重定向url更改爲'http:// SITE_NAME/oauth2/callback'並在我的生產環境中測試時,從不會觸發回調。我確保使用我的生產client_id和谷歌API控制檯的祕密,以及匹配的重定向網址。我甚至會在生產日誌中添加'approval_prompt =>'force'' – mnort9
@ mnort9,但沒有任何內容,就像無法路由的東西一樣?有兩件事情可能發生:1)Google沒有向您發送任何請求,或者2)它發送錯誤的請求,並且出現路由錯誤。我建議還嘗試在生產環境中加載控制檯,並手動嘗試OAuth調用,以查看是否可以發現錯誤。 – fotanus
好的,我在生產中得到了這個工作。我會盡快在本地測試你的方法。 – mnort9