[英]Store redirect url for later use in rails 4
我正在使用Rails 4應用程序,並且正在使用/使用另一個網站(例如example.com)的API,該網站使用3足oauth授權(與twitter相同)。 為了實現此功能,我使用了此鏈接並實現了該鏈接 。
這是我的實現
AuthController
class AuthController < ApplicationController
before_filter :authenticate_user!
before_filter :fetch_request_token, only: [:authorize]
def authorize
token = @consumer.get_request_token(oauth_callback: 'http://localhost:3000/auth/fetch_access_token')
authorize_url = token.authorize_url
redirect_to authorize_url
end
def fetch_access_token
acc_token = request_token.get_access_token(oauth_verifier: params[:oauth_verifier])
# remaining logic
redirect_to files_jds_path
end
private
def fetch_request_token
#logic for fetching request token
end
end
JDsController
class JDsController < AuthController
before_filter :authorize, only: [:files, :field_info] unless: :check_access_token
def files
# logic for the files
end
def field_info
# logic for the files
end
private
def check_access_token
# logic for checking access_token
end
end
當前,我在執行任何操作之前正在檢查access_token是否存在,如果不存在access_token,那么我正在使用authorize方法來獲取access_token。
如果您從AuthController
(這是我的回調網址)中看到了fetch_access_token
方法,則在其中我將硬編碼的重定向路徑稱為files_jds_path
。
由於此實現,盡管將before_filter應用於field_info
,所以在獲取access_token之后,它將重定向到files_jds_path
。
但是我需要將其概括化,以便針對任何操作將其重定向到相應的路徑。
誰能建議我該怎么做
您可以將OAuth回調網址設置為在查詢參數中包含路徑。 Facebook和Twitter允許這樣做。
class AuthController < ApplicationController
before_filter :authenticate_user!
before_filter :fetch_request_token, only: [:authorize]
def authorize
uri = URI('http://localhost:3000/auth/fetch_access_token')
uri.query = { redirect_to: params[:referrer] }.to_query if params[:referrer]
token = @consumer.get_request_token(oauth_callback: uri)
authorize_url = token.authorize_url
redirect_to authorize_url
end
def fetch_access_token
acc_token = request_token.get_access_token(
oauth_verifier: params[:oauth_verifier]
)
# remaining logic
redirect_to params[:referrer] || files_jds_path
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.