为什么用户必须输入7位数的Twitter PIN才能授予我的应用程序访问权限?

时间:2009-08-11 20:22:20

标签: ruby-on-rails ruby twitter oauth

我正在为我的用户在rails代码推文上实现一些ruby。我正在创建适当的oauth链接......类似于

http://twitter.com/oauth/authorize?oauth_token=y2RkuftYAEkbEuIF7zKMuzWN30O2XxM8U9j0egtzKv

但在我的测试帐户授予访问Twitter的权限后,它会提取一个页面,说“您已成功授予访问权限。只需返回并输入以下PIN即可完成此过程.1234567”

我不知道用户应该在哪里输入此PIN以及为什么他们必须这样做。我不认为这应该是必要的一步。 Twitter应该将用户重定向到我在应用程序设置中提供的回调URL。有谁知道为什么会这样?

更新 我发现this article表示我需要将用户发送到此网址(请注意“身份验证”而不是“授权”):

http://twitter.com/oauth/authenticate?oauth_token=y2RkuftYAEkbEuIF7zKMuzWN30O2XxM8U9j0egtzKv

我做了更改,但Twitter点击“允许”后再将用户重定向到授权路径,然后再次给他7位数的PIN码!

4 个答案:

答案 0 :(得分:6)

OAuth 1.0a添加了PIN码来解决social engineering attack to which OAuth 1.0 was vulnerable。但是,如果您的应用程序是桌面/ iPhone应用程序,则只需要用户手动输入PIN。如果它是一个Web应用程序,PIN应该作为浏览器重定向的一部分自动流动,用户不应该看到或输入它。

因此,如果您的应用是一个网络应用,那么您的OAuth库或您使用它时就会出现错误。如果您的应用是桌面应用,则这是一项旨在确保用户安全的“功能”。

答案 1 :(得分:6)

如果您没有使用您希望用户在接受时重定向到的URL指定oauth_callback参数,则默认为基于引脚的身份验证机制。使用oauth_callback=oob也将触发基于引脚的身份验证流程。

答案 2 :(得分:1)

只需登录您的Twitter帐户并编辑应用程序从桌面更改为浏览器每个人都在犯这样的错误,包括我自己。

答案 3 :(得分:0)

当我使用

时,我注意到了

config.gem "twitter", :version => "0.6.12"

twitter重定向正常,不显示引脚

但是当我使用更新的宝石版

config.gem "twitter", :version => "0.9.2"

它总是显示引脚。

这肯定需要进一步调查,可以通过进一步配置来解决 我没有对新的创业板做过。