2015-09-07 68 views
0

我试图使用StackExchange OAuth API在我的网站上对我的用户进行身份验证。使用StackExchange API的OAuth

当用户第一次注册时,一切正常。在这一点上,我得到了“访问令牌”,我保存在我的数据库中。

但是下次用户登录时,访问令牌值实际上与前一个不同。它应该是这样吗?

如果那么,如何检查已经使用StackExchange注册的现有用户?

我可以通过给出特定的站点名称(例如'stackoverflow')来获取用户的信息。但是如果我没有这些信息,我需要检查用户是否已经通过StackExchange登录?

是否有一个“用户”信息,我可以给一个accessToken?

回答

1

StackExchange OAuth实现并不是要向第三方应用程序认证用户,而是要授权这些第三方应用程序访问StackExchange API。

您获取的访问令牌不是代表当前登录用户的令牌,而是代表用户将访问权限授予您的应用程序。这是关于OAuth 2.0的范围的经典混淆,这里详细讨论:http://oauth.net/articles/authentication/

总结:您不能使用OAuth或StackExchange访问令牌对用户进行身份验证。

StackExchange确实支持OpenID协议以方便您查找的目的,请参阅https://openid.stackexchange.com/。其缺点是OpenID是一个被弃用的协议,被OpenID Connect所取代。 OpenID Connect是一种身份验证协议,实际上构建于OAuth 2.0之上,但尚未得到StackExchange的支持。

+0

晶莹剔透。谢谢。 – ericbae