如何在 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.0的工作原理似乎存在一些误解。

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

通常,您会将redirect_uri设置为应用程序中用户已登录的页面,以便您可以从会话数据中识别用户 ID(就像对应用程序中的任何其他页面所做的那样(

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

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

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

最新更新