在Railscast中:http://railscasts.com/episodes/241-simple-omniauth Ryan使用omniauth进行登录。在视频中,当他点击登录按钮时,Twitter第一次询问用户是否要授权Ryan的应用程序。第二次单击登录按钮时,它会自动将用户登录。在我的应用程序中,用户每次都被迫授权我的应用程序。如果用户登录到Twitter并且已经授权应用程序,那么它不应该“正常工作”吗?
编辑:我的应用程序目前具有读取,写入和直接消息权限。我也在使用omniauth-twitter(0.0.6)。
答案 0 :(得分:20)
在这里添加非rails回答。
请务必检查您应用的Twitter设置,选中“允许此应用程序用于使用Twitter登录”复选框。否则Twitter将始终将您重定向到授权页面而不是身份验证。
在最终检查推特设置之前,我花了45分钟对rails应用程序进行故障排除,希望这会节省一些时间。
答案 1 :(得分:3)
如果您已请求DM权限或其他高级权限的许可,则可能会导致问题。 (https://dev.twitter.com/discussions/1459)
如果这没有帮助,更多细节将会有用。
答案 2 :(得分:3)
我怀疑twitter oauth gem中的回归或其他内容:
编辑:解决问题。
我相信oauth
删除了各个策略。在任何情况下,使用Devise
,以下修复此问题(应该对其他Twitter oauth配置进行修改):
config.omniauth :twitter, 'consumer_key' , 'consumer_secret', :client_options => {:authorize_path => '/oauth/authenticate'}
答案 3 :(得分:2)
答案 4 :(得分:1)
我解决了只是将登录链接目的地更改为
"/auth/twitter?x_auth_access_type=read"
答案 5 :(得分:0)
似乎当您的应用设置具有读取,写入和访问直接消息时,它总是要求权限。 将其设置为仅读取或读取和写入可解决此问题。
答案 6 :(得分:0)
如果您最初将应用程序权限设置为“读取和写入”,并且稍后在您进行一次身份验证后添加了“访问直接邮件”权限,则后续身份验证尝试将导致“登录”页面重新出现。但是,请注意,您将看到该应用仍然无权访问该用户的直接消息。这是因为您的应用现在正在尝试请求直接的邮件权限,但您的访问令牌最初只是为了读/写而设置。
我找到了this discussion,其中@toptwetcom提到在应用权限更改后必须重新生成您的访问令牌(不是App API密钥)。我仍处于开发模式,但这对我有用:
如果您现在转到https://twitter.com/settings/applications,您应该会看到您已经为您的应用授予了“读取,写入和直接消息”权限。此外,如果您注销您的应用并通过Twitter注销,它应该“正常工作”(假设您已经使用Twitter登录)。
另外,请务必阅读@JasonLogsdon's answer。