尝试获取auth令牌时出现Getting 400错误-twitter omniauth



我有一个rails应用程序,我正试图在其中实现twitter omniauth,以便许多用户可以在该应用程序中发布/访问/访问许多twitter帐户。我已经关注了这个话题的railscasts(直到大约3分钟),但我得到了400http的回复。

在我的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密钥&secret是正确的,所以它似乎没有正确设置http标头。rails错误页面上的请求和响应参数为空。如有任何帮助,我们将不胜感激。

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

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

    source ~/.bash_profile

在你的终端,让它来接它。如果您在RubyMine或Visual Studio code等IDE中运行代码,则可能需要重新启动IDE。

只需更改

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

相关内容

最新更新