我正在尝试使用StackExchange OAuth API在我的网站上验证我的用户。
用户第一次注册时一切正常。此时,我得到了"访问令牌",我将其保存在我的DB中。
但是用户下次登录时,访问令牌值实际上与上一次不同。应该是这样的吗?
如果是这样,我如何检查已经使用StackExchange注册的现有用户?
我可以通过给出一个特定的站点名称(例如;"stackoverflow")。但是,如果我没有这些信息,我需要检查用户是否已经通过StackExchange登录,该怎么办?
是否有一个"用户"信息,我可以得到给定的accessToken?
StackExchange OAuth实现不是为了向第三方应用程序认证用户,而是为了授权这些第三方应用程序访问StackExchange API。
你得到的访问令牌不是一个代表当前登录用户的令牌,它代表用户给你的应用程序访问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支持。