【问题标题】:How to identify application user after Fitbit authorisationFitbit授权后如何识别应用程序用户
【发布时间】:2018-05-14 15:13:42
【问题描述】:

假设我们的应用程序数据库中用户 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


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2019-01-24
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    相关资源
    最近更新 更多