我最近几天一直在尝试使用twitter-omniauth
gem验证用户,但没有成功。(认证与facebook工作完美)
我一直得到401未经授权的错误。
我搜索了stackoverflow,但是没有一个答案可以解决我的问题。
当我尝试http://127.0.0.1/users/auth/twitter
时,我到达twitter登录。我登录,我被重定向到http://127.0.0.1/users/auth/twitter/callback
和未经授权的错误出现。
下面是我在twitter上输入的回调url
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"}
如果你需要更多的信息,我可以提供。请帮我解决这个问题
我今天遇到了这个问题,发现我必须在我的应用程序下的dev.twitter.com的设置中设置一个回调URL。所以检查你是否设置了一个回调URL设置,我将其设置为我预期的生产地址,当在本地开发模式下运行时,它被重定向得很好。
它在回调url输入框中提到,如果留空,将限制应用程序使用回调url。
我很确定当它来自localhost时,我遇到了这个问题…
这篇文章说他们允许这样做,但是如果我没记错的话,我必须使用一个外部可访问的URL。当我在测试我的oauth时,我使用了DynDns并在路由器上打开了一个端口。
在我的情况下,我使用"Access Token"和secret而不是"Consumer Key"导致此错误。
在我的例子中,我们使用的是Timecop gem,它导致omniauth-twitter gem失败,因为与Timecop设置的本地服务器时间冲突。
我遇到了这个问题,因为我将密钥放在了~/环境中。Bash_profile,但我从来没有找到它的来源。一旦我打开一个新的终端,它就可以正常工作了。
显然Twitter在应用设置选项卡上增加了一个复选框。
在"应用程序详细信息"窗格的底部,您必须勾选"允许使用此应用程序登录Twitter"框。
检查后等了几分钟,警报框告诉我一切都开始工作了