0

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

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

那么我该怎么做呢?任何想法?

4

1 回答 1

0

您需要做的是在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

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

于 2018-03-15T13:40:29.250 回答