Twitter不记得授权

时间:2013-01-15 11:19:30

标签: twitter oauth twitter-oauth scribe

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

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

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

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

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

1 个答案:

答案 0 :(得分:9)

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
  3. 现在,您的应用程序将引导用户登录/oauth/authenticate端点,如果他们至少已经授权您的应用程序一次,那么它们就会被通过。

    修改 其他文档 - https://dev.twitter.com/docs/api/1.1#102