OAuth 与 StackExchange API

OAuth with StackExchange API

我正在尝试使用 StackExchange OAuth 在我的网站上验证我的用户 API。

用户首次注册时一切正常。此时,我得到 "access token",我将其保存在我的数据库中。

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

如果是这样,我如何检查已经使用 StackExchange 注册的现有用户?

我可以通过提供特定站点名称(例如 'Whosebug')来获取用户的信息。但是,如果我没有该信息并且我需要检查用户是否已通过 StackExchange 登录怎么办?

是否有 "user" 信息,我可以获得 accessToken?

StackExchange OAuth 实现并不是为了向第 3 方应用程序验证用户身份,而是授权那些第 3 方应用程序访问 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 尚不支持。