我一直在尝试使用twitter-omniauth
gem验证用户最近几天,但没有成功。 (与facebook的身份验证完美无缺)
我一直在收到401 Unauthorized错误。
我搜索stackoverflow,但没有一个答案可以解决我的问题。
当我尝试http://127.0.0.1/users/auth/twitter
时,我会通过Twitter登录。我登录并且我被重定向到http://127.0.0.1/users/auth/twitter/callback
并且未经授权的错误来了。
我在twitter中输入了回调网址
http://127.0.0.1/users/auth/twitter/callback
rake routes
输出
new_user_session GET /users/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"}
user_session POST /users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
user_omniauth_callback /users/auth/:action/callback(.:format) {:action=>/twitter|facebook/, :controller=>"users/omniauth_callbacks"}
user_password POST /users/password(.:format) {:action=>"create", :controller=>"devise/passwords"}
new_user_password GET /users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"}
edit_user_password GET /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
PUT /users/password(.:format) {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET /users/cancel(.:format) {:action=>"cancel", :controller=>"devise/registrations"}
user_registration POST /users(.:format) {:action=>"create", :controller=>"devise/registrations"}
new_user_registration GET /users/sign_up(.:format) {:action=>"new", :controller=>"devise/registrations"}
edit_user_registration GET /users/edit(.:format) {:action=>"edit", :controller=>"devise/registrations"}
PUT /users(.:format) {:action=>"update", :controller=>"devise/registrations"}
DELETE /users(.:format) {:action=>"destroy", :controller=>"devise/registrations"}
login /login(.:format) {:action=>"login", :controller=>"home"}
root / {:controller=>"home", :action=>"index"}
如果您需要更多信息,我会提供。请帮我解决这个问题。
答案 0 :(得分:17)
我今天遇到了这个问题,发现我必须在我的应用程序下的dev.twitter.com设置中设置一个回调URL。因此,请检查您是否设置了回调URL设置,我将其设置为我的预期生产地址,当在本地以开发模式运行时,它重定向正常。
它在回调网址输入框中提到如果留空则会限制应用使用回调网址。
答案 1 :(得分:13)
我很确定当它来自localhost时我遇到了这个问题...
This article说他们允许,但如果内存正确地为我服务,我必须使用外部可访问的URL。当我测试我的oauth时,我使用了DynDns并在我的路由器中打开了一个端口。
答案 2 :(得分:2)
就我而言,我使用过" Access Token"和秘密而不是消费者密钥"造成了这个错误。
答案 3 :(得分:1)
在我的情况下,我们使用的是Timecop gem,它导致omniauth-twitter gem因为与timecop设置的本地服务器时间冲突而失败。
答案 4 :(得分:1)
我遇到了这个问题,因为我已将我的密钥放在〜/ .bash_profile的环境中,但我从未采购过它。一旦我打开一个新的终端,它工作正常。
答案 5 :(得分:1)
显然Twitter在App Settings选项卡上添加了一个复选框。
在“应用程序详细信息”窗格的底部,您必须选中“允许此应用程序用于使用Twitter登录”的复选框。
检查后等待几分钟,因为警报框告诉我一切都开始工作了。