Twitter不记得授权

Twitter不记得授权,twitter,oauth,twitter-oauth,scribe,Twitter,Oauth,Twitter Oauth,Scribe,我使用Scribe(OAuth1.0)作为一种机制,以便用户可以使用他们的Twitter帐户对我的GWT/GAE应用程序进行身份验证 根据上述情况,有3种可能的情况: a/用户已登录并已批准。在这种情况下,Twitter应该透明地将用户重定向回我的应用程序url, b/用户已登录但未授权,或 c/用户未登录 当Twitter返回到我的应用程序(回调)时,我使用verifier参数从Twitter读取用户数据,我使用该数据确定应用程序中的用户 所有这些都可以正常工作,但以下情况除外: 方案a/对我

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

根据上述情况,有3种可能的情况: a/用户已登录并已批准。在这种情况下,Twitter应该透明地将用户重定向回我的应用程序url, b/用户已登录但未授权,或 c/用户未登录

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

所有这些都可以正常工作,但以下情况除外:


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

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

在Scribe中,默认设置为“授权”——要将其更改为“验证”,您需要两件事:

  • 确保在Twitter应用程序设置页面中选中了允许此应用程序用于使用Twitter登录设置
  • 在应用程序中-指定要使用的Scribe API类时-不要使用
    org.Scribe.builder.API.TwitterApi.class
    将其更改为
    org.Scribe.builder.API.TwitterApi.Authenticate.class
  • 现在,您的应用程序将引导用户登录到
    /oauth/authenticate
    端点,如果他们至少对您的应用程序进行了一次授权,他们就可以通过

    编辑:
    其他文档-

    我可能有一个解决方案:我可以使用回调参数构建访问令牌并将其存储在cookie中。我认为访问令牌是永久的。之后,当用户尝试使用Twitter登录时,应用程序将使用cookie中的访问令牌。非常感谢。我只需要更改授权以进行身份验证,否则从2天起我就要查看twitter上的api文档了