【问题标题】:Getting 400 error when trying to get auth token - twitter omniauth尝试获取身份验证令牌时出现 400 错误 - twitter omniauth
【发布时间】:2015-06-01 05:49:08
【问题描述】:

我有一个 Rails 应用程序,我正在尝试在其中实现 twitter omniauth,以便许多用户可以从应用程序内的许多 twitter 帐户发布/获取/获取。我已经完全关注了该主题的railscasts(直到大约 3 分钟),但我得到了 400 个 http 响应。

在我的 gemfile 中:

gem 'omniauth'
gem 'omniauth-twitter'

/config/initializers/omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET'],
end

在我看来,我自然有<%= link_to "Connect", "/auth/twitter" %>routes.rb 我有(这是railscast 的唯一区别,因为我不使用它来注册/登录用户,而是发布到twitter):

get 'auth/:provider/callback', to: 'twitter_accounts#create'
get 'auth/failure', to: redirect('/')

单击视图中的链接会导致以下错误:

OAuth::Unauthorized
400 Bad Request

据我所知,我的 api 密钥和秘密是正确的,所以它似乎没有正确设置 http 标头。 Rails 错误页面上的请求和响应参数为空。任何帮助将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby twitter twitter-oauth


    【解决方案1】:

    所以像往常一样,在我把头发扯了一整天之后,我在这里发布问题的那一刻就开始工作了。问题是它没有获取我的环境变量。我直接粘贴了字符串,看看这是否是问题,但这也需要重新启动 rails 应用程序才能生效,我没有这样做。

    【讨论】:

      【解决方案2】:

      只是为了扩展 rorykoehler 的答案,您可能还需要重新启动终端以获取 OAuth 密钥和秘密的环境变量。如果您将它们存储在您的 bash 配置文件中,您可以运行

          source ~/.bash_profile
      

      在您的终端中让其接收。 如果您在 RubyMine 或 Visual Studio Code 等 IDE 中运行代码,您可能需要重新启动 IDE。

      【讨论】:

        【解决方案3】:

        只是改变

        Rails.application.config.middleware.use OmniAuth::Builder do
          provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET'],
        end
        

        Rails.application.config.middleware.use OmniAuth::Builder do
          provider :twitter, 'TWITTER_KEY', 'TWITTER_SECRET'
        end
        

        【讨论】:

        • 建议将密钥/秘密存储在环境变量中,而不是将它们检查到版本控制中。这在技术上可能适用于开发环境;更好的答案是如何在此范围内实际获取环境变量。
        猜你喜欢
        • 2013-12-04
        • 2013-08-30
        • 2015-04-05
        • 2018-11-03
        • 2020-07-31
        • 2019-05-07
        • 2016-06-04
        • 1970-01-01
        • 2021-11-24
        相关资源
        最近更新 更多