我有一个rails应用程序,其中我正在尝试实现twitter omniauth,因此很多用户可以在应用程序内发布/接收许多Twitter帐户。我已经关注了这个主题的railscasts(直到大约3分钟),但我得到了400响应。
在我的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键&amp;秘密是正确的所以它似乎没有正确设置http标头。 rails错误页面上的请求和响应参数为空。任何帮助将不胜感激。
答案 0 :(得分:4)
像往常一样,整天撕掉我的头发,我在这里发布问题的那一刻就开始工作了。问题是它没有拿起我的环境变量。我直接粘贴在字符串中以查看是否存在问题但是还需要重新启动rails应用程序才能生效,而我还没有这样做。
答案 1 :(得分:1)
为了扩展rorykoehler的答案,您可能还需要重新启动终端才能获取OAuth密钥和密码的环境变量。如果您将它们存储在bash配置文件中,则可以运行
source ~/.bash_profile
在您的终端中为其提取。 如果您在像RubyMine或Visual Studio Code这样的IDE中运行代码,则可能需要重新启动IDE。
答案 2 :(得分:-2)
只需更改
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