簡體   English   中英

如何為oauth回調配置路由

[英]How to configure route for oauth callback

我正在使用寶石OAuth2與Google服務進行通信。 我不明白如何實現回調,該回調通過OAuth代碼接收響應以獲取訪問令牌。 當我在callback方法中設置斷點時,它似乎永遠不會被調用。

這是我的代碼:

路線:

match '/oauth2/callback' => 'reports#callback'

實際重定向的網址:

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

Google服務器正在嘗試訪問無效的URL http://localhost/oauth2/callback?code=111111

您需要一個域名才能使用OAuth之類的服務,因為Google服務器必須能夠通過互聯網找到您的計算機。

為了能夠在開發機器上執行此操作,您應該:

  1. 在已知的DNS服務器上設置名稱:最簡單的方法是通過動態DNS服務器(例如dyndnsno-ip)

  2. 如果您在使用NAT的路由器后面,則可能需要將端口80上的調制解調器的請求重定向到您的計算機 :如果不這樣做,則調制解調器將在Google 80端口上收到一個軟件包,並且會說“不是為我”,將其丟棄。 您可以在調制解調器菜單中執行此操作-在其上查找端口轉發或NAT部分。

傳遞給Google的redirect_url必須與從客戶端瀏覽器看到的回調URL完全匹配。 在URL中使用本地主機沒有問題(關於DNS和NAT的fotanus句子是錯誤的)。 如果您在其他端口(例如8080)上運行容器,則必須:

  • 在Google雲中指定網址: http://localhost:8080/oauth2/callback

  • 在客戶端請求中指定相同的返回URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM