首页 > 解决方案 > Fitbit授权后如何识别应用程序用户

问题描述

假设我们的应用程序数据库中用户 ID 为 100 的用户使用端点http://localhost/api/100/fitbit/authorize向 Fitbit 启动 OAuth 2.0 授权,并通过回调http://localhost/api/fitbit/callback获得授权。

我们如何识别哪个用户获得了授权,以便我们可以存储访问令牌和刷新令牌?回调 URL 不能包含用户 ID 100,因为 Fitbit 配置不允许在重定向 URL 中使用额外参数。

或者有没有其他方法来识别授权用户?

标签: oauth-2.0fitbit

解决方案


关于 OAuth 2.0 的工作方式似乎存在一些误解。

在您的问题中,您使用了callback一词,好像 Fitbit 服务器将向该 URL 发出 HTTP 请求,但这不是它的工作方式。发生的情况是,显示 Fitbit 授权页面的用户代理收到带有包含重定向 URIHTTP 302 Found的标头的响应。Location所以它是响应而不是回调,它指示用户代理加载Location标头中指定的 URI(如果用户代理是浏览器,它会加载)。

通常,您会redirect_uri在应用程序中设置一个页面,您的用户已经登录,以便您可以从会话数据中识别用户 ID(就像您在应用程序中的任何其他页面一样)

如果由于某种原因上述方法对您不起作用,那么您可以state在将用户重定向到 Fitbit 的 OAuth 2.0 授权页面时使用查询参数。Fitbit 的“使用 OAuth 2.0”文档对state参数的描述如下:

当用户被重定向回您的应用程序时,提供可能对您的应用程序有用的任何状态。此参数将完全按照您的应用程序指定的方式添加到重定向 URI。

state参数是 OAuth 2.0 的标准功能,因此不是 Fitbit 特定的。它可以与根据RFC 6749正确实现 OAuth 2.0 的任何服务一起使用。


推荐阅读