5

我使用 Scribe (OAuth1.0) 作为一种机制,以便用户可以使用他们的 Twitter 帐户对我的 GWT/GAE 应用程序进行身份验证。

根据https://dev.twitter.com/docs/auth/implementing-sign-twitter,有 3 种可能的情况: a/ 用户已登录并获得批准。在这种情况下,Twitter 应该将用户透明地重定向回我的应用程序 url,b/ 用户已登录但未授权,或 c/ 用户未登录

当 Twitter 回到我的应用程序(回调)时,我使用 verifier 参数从 twitter 读取用户数据,我用它来确定我的应用程序中的用户。

所有这些都可以正常工作,除了以下内容:

场景 a/ 对我不起作用。尽管用户已经授权我的应用程序读取他的用户数据,但 Twitter 似乎不记得这一点,并再次请求授权访问。(场景 b/)。

4

1 回答 1

10

twitter 为请求 OAuth 令牌的应用程序提供了两个 URL: /oauth/authenticate/oauth/authorize. 当应用程序将用户定向到授权端点时 - Twitter 将在用户每次登录时请求用户授权应用程序。身份验证端点将请求一次授权,然后任何后续登录 Twitter 将无缝传递到应用程序回调。这在传统上被称为“使用您的 Twitter 帐户登录”。

在 Scribe 中,默认设置是授权- 要更改它以进行身份​​验证,您需要两件事:

  1. 确保 在您的 Twitter 应用程序设置页面中选中允许此应用程序用于使用 Twitter 登录设置。
  2. 在您的应用程序中 - 当您指定要使用的 Scribe API 类时 - 而不是使用org.scribe.builder.api.TwitterApi.class将其更改为org.scribe.builder.api.TwitterApi.Authenticate.class

现在,您的应用程序将引导用户登录到/oauth/authenticate端点,如果他们至少授权了您的应用程序一次,他们将直接通过。

编辑: 附加文档 - https://dev.twitter.com/docs/api/1.1#102

于 2013-06-06T18:29:03.383 回答