我正在尝试使用StackExchange OAuth API在我的网站上验证我的用户。
当用户第一次注册时,一切正常。此时,我获得了“访问令牌”,我将其保存在我的数据库中。
但是下次用户登录时,访问令牌值实际上与前一个不同。它应该是这样的吗?
如果那时,我如何检查已经使用StackExchange注册的现有用户?
我可以通过提供特定的站点名称(例如'stackoverflow')来获取用户的信息。但是如果我没有这些信息并且我需要检查用户是否已经通过StackExchange登录了怎么办?
是否有“用户”信息,我可以获得accessToken?
答案 0 :(得分:2)
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尚不支持。