我使用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 /).
答案 0 :(得分:9)
Twitter为请求OAuth令牌的应用程序提供了两个URL:
/oauth/authenticate
和/oauth/authorize
。当应用程序将用户定向到授权端点时,Twitter将请求用户在他们登录时授权应用程序。 身份验证端点将请求授权一次,然后任何后续登录到Twitter将无缝传递到应用程序回调。这更传统上称为“使用您的Twitter帐户登录”。
在Scribe中,默认为授权 - 要将其更改为身份验证,您需要两件事:
org.scribe.builder.api.TwitterApi.class
将其更改为org.scribe.builder.api.TwitterApi.Authenticate.class
现在,您的应用程序将引导用户登录/oauth/authenticate
端点,如果他们至少已经授权您的应用程序一次,那么它们就会被通过。
修改强> 其他文档 - https://dev.twitter.com/docs/api/1.1#102