我正在尝试使用Devise / OmniAuth设置Twitter登录,遵循最新的RailsCast。我已经注册了Twitter开发者应用程序,使用的回调网址为:myiphere:port/users/auth/twitter
。
我已经跟踪了RailsCast上的T,但每次点击Sign In With Twitter
链接时,我都会立即获得OAuth::Unauthorized 401 Unauthorized on the myiphere:port/users/auth/twitter page
。
我认为我已使用export TWITTER_CONSUMER_KEY=MYKEYINSERTEDHERE export TWITTWR_CONSUMER_SECRET=MYSECRETINSERTEDHERE rails server
正确定义了密钥。我已经尝试了大多数我能在互联网上找到的解决方案,但都无济于事。几乎所有的答案都是为了在登录后返回他们的网站,我无法访问任何类型的Twitter屏幕,只是/users/auth/twitter
页面上的401错误。
答案 0 :(得分:17)
我有同样的问题;在我的情况下,我已正确设置API密钥,但未在{设置}选项卡下https://dev.twitter.com/apps/的Twitter设置中设置回调URL。
奇怪的是,回调网址似乎不需要指向任何有用的地方; Twitter显然只是将其存在作为某种信号。
omniauth-twitter提供的调试信息还有待改进。
答案 1 :(得分:2)
我通过从初始化程序DEVISE.RB中删除括号和ENV来实现它:
config.omniauth :twitter, "APP_ID", "APP_SECRET"
我在DEV Twitter设置中指定的回调:
http://www.mysite.com/users/auth/twitter/callback
在routes.rb
中devise_for :users, controllers: {omniauth_callbacks: "omniauth_callbacks"}
我的登录链接:
<%= link_to "Log in with Twitter", user_omniauth_authorize_path(:twitter) %>
答案 2 :(得分:1)
在这里回答我自己的问题,似乎我只需要添加实际的密钥来代替TWITTER_CONSUMER_KEY
和TWITTER_CONSUMER_SECRET
,而不是我最初尝试添加它们的方式。我也从每一个中删除了ENV[]
,我认为这可能有所帮助。
答案 3 :(得分:0)
您需要添加figaro gem才能使用视频中的环境变量。该链接将指导您如何设置它们。
答案 4 :(得分:0)
对我来说,问题是“未允许此应用程序用于使用Twitter登录”(在应用程序页面&gt;设置选项卡下)