【问题标题】:Twitter does not remember authorizationTwitter 不记得授权
【发布时间】:2012-12-29 11:38:13
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我可能有一个解决方案:我可以使用回调参数来构建访问令牌并将其存储在 cookie 中。我认为访问令牌是永久性的。之后,当用户尝试使用 Twitter 登录时,应用程序将使用 cookie 中的访问令牌。

标签: twitter oauth twitter-oauth scribe


【解决方案1】:

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

在 Scribe 中,默认设置为 authorize - 要将其更改为 authenticate,您需要做两件事:

  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

【讨论】:

  • 非常感谢。我只需要更改授权进行身份验证,否则我从 2 天开始就在 twitter 上浏览 api 文档
猜你喜欢
  • 1970-01-01
  • 2015-09-16
  • 2011-07-28
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 2011-04-17
  • 2016-05-14
相关资源
最近更新 更多