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 尚不支持。
我正在尝试使用 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 尚不支持。