【问题标题】:How to fix that Withings developer API refresh token gets expired within 4 Hours?如何解决 Withings 开发人员 API 刷新令牌在 4 小时内过期的问题?
【发布时间】:2019-08-09 14:23:03
【问题描述】:

我已经为 Withings API (http://developer.withings.com/oauth2/) 的 OAuth2 实现了一个 Java 接口。最初,将处理从 Withings 后端发送到我的服务器的授权令牌 (http://developer.withings.com/oauth2/img/OauthDiagram.jpg)。使用授权令牌,我成功获得了访问令牌和刷新令牌。反过来,使用访问令牌,我可以从资源服务器获取实际数据。 刷新令牌可成功用于获取新的访问令牌,但只能在大约 4 小时内。 http://developer.withings.com/oauth2/#tag/glossary 中的“刷新令牌”描述了刷新令牌将“有效期为一年”。所以我不知道我的错在哪里。

这是该机制在下午 2 点工作但不是下午 6 点的日志截图。 大约下午 2 点,该应用被授予访问具有 USER_ID 的用户数据的权限。

Aug 08, 2019 2:00:46 PM UserAccessData renewAccessToken
INFORMATION: Withings refresh access token request: grant_type=refresh_token&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&refresh_token=REFRESH_TOKEN&redirect_uri=REDIRECT_URI
Aug 08, 2019 2:00:46 PM UserAccessData renewAccessToken
INFORMATION: Withings refresh access token response: {"access_token":"ACCESS_TOKEN","expires_in":10800,"token_type":"Bearer","scope":"user.info,user.metrics,user.activity","refresh_token":"REFRESH_TOKEN","userid":USER_ID}
[...]
Aug 08, 2019 6:00:45 PM UserAccessData renewAccessToken
INFORMATION: Withings refresh access token request: grant_type=refresh_token&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&refresh_token=REFRESH_TOKEN&redirect_uri=REDIRECT_URI
Aug 08, 2019 6:00:46 PM UserAccessData renewAccessToken
INFORMATION: Withings refresh access token response: {"errors":[{"message":"invalid_grant: Invalid Params: invalid refresh_token"}]}
Aug 08, 2019 6:00:46 PM AccessTokenUpdaterTask run
SEVERE: UserAccessData of User with UserID USER_ID could not be renewed and refreshed properly

我不知道我应该提供哪个 Java sn-p,因为 e. G。 renewAccessToken-Method 在下午 2 点工作。这可能是 Withings 后端的错误配置(我认为他们使用 GuzzleHTTP,因为在向我的服务器发送通知时在他们的用户代理中说明了这一点)?他们不回复他们提供的合作伙伴电子邮件 (http://developer.withings.com/oauth2/#tag/FAQ) 的电子邮件。

【问题讨论】:

  • 我希望这个问题中需要一些相关的代码。它不只是单独工作,你必须写一些东西,对吗?

标签: java server oauth-2.0 refresh-token withings


【解决方案1】:

刷新/初始注册后,“Withings 刷新访问令牌响应”中的 REFRESH_TOKEN

{"access_token":"ACCESS_TOKEN","expires_in":10800,"token_type":"Bearer","scope":"user.info,user.metrics,user.activity","refresh_token":"REFRESH_TOKEN","userid":USER_ID}

在 4 小时内是相同的,但在这 4 小时后请求新的访问令牌时,也会更新并在该响应中发回。因此,在请求新的访问令牌时,必须从该响应中保存 ACCESS_TOKEN 和 REFRESH_TOKEN。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    相关资源
    最近更新 更多