【问题标题】:Change Twitter provider after initialization with Omniauth gem使用 Omniauth gem 初始化后更改 Twitter 提供程序
【发布时间】:2012-06-29 04:35:48
【问题描述】:

我正在使用 Omniauth 在 Twitter 上进行身份验证,但我有 2 个应用程序注册了不同的名称,我想根据当前的语言环境(会话范围)使用它们。

所以我需要在用户调用 auth/twitter 之前更改在omniauth.rb 文件中定义的提供者密钥和秘密(我想做一个 before_filter 但 auth/twitter 是到 twitter 的外部链接,而不是常规操作)或者一种配置 Omniauth 以按语言环境定义提供程序而不是为整个应用程序范围定义的方法。

那我该怎么做呢?有什么想法吗?

【问题讨论】:

标签: ruby-on-rails twitter omniauth


【解决方案1】:

您需要做的是在omniauth builder中将setup设置为true

  Rails.application.config.middleware.use OmniAuth::Builder do
    provider :twitter , :setup => true
  end

然后在您的 routes.rb 文件中设置添加以下内容以定义将调用哪个路由进行设置

  get '/people/auth/twitter/setup' => 'sessions#twitter_setup' #needed for devise setup phase hook to work

之后只需在会话控制器中设置符合路由的omniauth策略即可进行设置

def twitter_setup
  request.env['omniauth.strategy'].options[:consumer_key] = YOUR_DYNAMIC_KEY
    request.env['omniauth.strategy'].options[:consumer_secret] = YOUR_DYNAMIC_SECRET_KEY
    render :plain => "Setup complete.", :status => 404
end

这将使您能够加载所需的应用程序

【讨论】:

    猜你喜欢
    • 2019-10-24
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多