设备/OmniAuth/Twitter - OAuth::Unauthorized (401)

5
我正在尝试使用Devise/OmniAuth设置Twitter登录,遵循最新的RailsCast。我已注册Twitter开发者应用程序,并使用回调URL:myiphere:port/users/auth/twitter
我严格按照RailsCast的步骤进行操作,但每次点击“使用Twitter登录”链接时,我立即收到“在myiphere:port/users/auth/twitter页面上,OAuth::Unauthorized 401 Unauthorized”的错误。
我认为我已经正确定义了密钥,使用命令export TWITTER_CONSUMER_KEY=MYKEYINSERTEDHERE export TWITTWR_CONSUMER_SECRET=MYSECRETINSERTEDHERE rails server。我已尝试互联网上找到的几乎所有解决方案,但都没有成功。几乎所有答案都是针对登录后返回其站点,但我无法进入任何Twitter屏幕,只能看到/users/auth/twitter页面上的401错误。
5个回答

17

我遇到了同样的问题;在我的情况下,我正确设置了API密钥,但是在Twitter设置中未设置回调URL,位于https://dev.twitter.com/apps/的“设置”选项卡下。

奇怪的是,回调URL似乎不需要指向任何有用的地方; Twitter显然仅使用其存在作为某种信号。

omniauth-twitter提供的调试信息还有待完善。


3

我通过从初始化器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) %>

你节省了我数小时的挫败感。我也是使用环境变量设置我的初始化器,并且还有一个作用域。由于某种原因,对于一些用户,在身份验证时我会收到401错误。在硬编码值之后,现在似乎对每个人都有效。A)谢谢 B)什么?! - Tony Beninate

2
回答自己的问题,看起来我只需要在TWITTER_CONSUMER_KEYTWITTER_CONSUMER_SECRET的位置上添加实际密钥,而不是我最初尝试添加它们的方式。我还删除了每个密钥中的ENV [],我认为这可能有所帮助。

0
对于我来说,问题在于“允许此应用程序用 Twitter 登录”未被选中(在应用程序页面下的设置选项卡中)。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接