簡體   English   中英

變量聲明-Twitter API Ruby on Rails

[英]Variable declaration - Twitter API Ruby on Rails

我正在為我的項目使用Twitter API 當用戶使用Twitter登錄時,我按照文檔所述設置了配置。

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :authenticate_user!
  before_action :set_twitter_client

  private
    def set_twitter_client
      if user_signed_in?
        @twitter_client = Twitter::REST::Client.new do |config|
          config.consumer_key        = "xxx"
          config.consumer_secret     = "xxx"
          config.access_token        = current_user.token
          config.access_token_secret = current_user.token_secret
        end
      end
    end
end

但是,每次用戶加載頁面時,都會調用此聲明,並且最終導致配額溢出,這很煩人。 我試圖只聲明一次此變量,然后將其存儲在會話變量中,但它不起作用。

所以我的問題是,聲明此配置變量的最佳方法是什么? 是否可以為每個連接的用戶聲明一次並將其存儲在某個地方? 還是每次用戶加載新頁面時都需要重新調用它?

我建議為您的配置使用初始化程序。 當rails啟動時,config / initializers中的任何內容都將運行一次,這為配置/連線提供了一個中心位置。 例如在config / initializers / twitter_initializer.rb中:

TwitterClient = Twitter::REST::Client.new do |config|
      config.consumer_key        = ENV["TWITTER_CONSUMER_KEY"]
      config.consumer_secret     = ENV["TWITTER_CONSUMER_SECRET"]
      config.access_token        = ENV["TWITTER_ACCESS_TOKEN"]
      config.access_token_secret = ENV["TWITTER_ACCESS_SECRET"]
end

然后在您的控制器中,您可以隨處使用TwitterClient進行API調用。

暫無
暫無

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

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