1

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

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

但是下次用户登录时,access token 的值其实和之前的不一样。它应该是这样的吗?

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

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

是否有我可以获得 accessToken 的“用户”信息?

4

1 回答 1

2

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 尚不支持。

于 2015-09-07T18:23:35.767 回答