5

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

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

但是在我的测试帐户授予对 twitter 的访问权限后,它会弹出一个页面,上面写着“您已成功授予访问权限。只需返回并输入以下 PIN 即可完成该过程。1234567”

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

更新 我发现这篇文章指出我需要将我的用户发送到这个 URL(注意“authenticate”而不是“authorize”):

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

我进行了更改,但 Twitter 在用户单击“允许”后将用户重定向到授权路径,然后再次为他提供 7 位 PIN!

4

4 回答 4

6

OAuth 1.0a添加了 PIN 以解决OAuth 1.0 易受攻击的社会工程攻击。但是,如果您的应用程序是桌面/iphone 应用程序,则仅需要用户手动输入 PIN。如果它是一个网络应用程序,则 PIN 应该作为浏览器重定向的一部分自动流动,并且用户不必看到或输入它。

因此,如果您的应用程序是 Web 应用程序,那么您的 OAuth 库或您对它的使用都存在错误。如果您的应用程序是桌面应用程序,则这是一项旨在确保用户安全的“功能”。

于 2009-08-12T06:18:47.967 回答
6

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

于 2009-08-13T02:55:58.267 回答
1

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

于 2010-07-14T11:28:56.173 回答
0

我注意到当我使用

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

twitter 重定向很好,不显示 pin

但是当我使用较新的 gem 版本时

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

它总是显示引脚。

这肯定需要进一步调查,并且可以通过我没有对较新的 GEM 进行的进一步配置来解决。

于 2010-03-27T12:19:17.520 回答