簡體   English   中英

存儲重定向URL,以供以后在Rails 4中使用

[英]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.

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