我正在尝试使用刷新令牌刷新Fitbit访问令牌。 现在如Fitbit API文档中提到here,尝试POST到https://api.fitbit.com/oauth2/token时有一些要求。
标头要求:
Authorization标头必须设置为Basic,后跟空格,然后是应用程序客户端ID和密码的Base64编码字符串,用冒号连接。例如,Base64编码的字符串Y2xpZW50X2lkOmNsaWVudCBzZWNyZXQ =被解码为[client_id]:[client_secret]。
身体要求:
grant_type(必需)refresh_token类型:字符串
refresh_token(必需)Fitbit发给您的刷新令牌。输入:string
总的来说,完整的请求应如下所示:
POST https://api.fitbit.com/oauth2/token
授权:基本Y2xpZW50X2lkOmNsaWVudCBzZWNyZXQ =
内容类型:application / x-www-form-urlencoded
grant_type = refresh_token&安培; refresh_token = abcdef01234567890abcdef01234567890abcdef01234567890abcdef0123456
上面显示的Fitbit示例正是我所拥有的:
refresh_url = "https://api.fitbit.com/oauth2/token"
grants = "grant_type=refresh_token&refresh_token=#{token.refresh_token}"
refresh_headers = ["Authorization": "Basic #{Base.encode64("my_app_id:my_app_secret")}", "Content-Type": "application/x-www-form-urlencoded"]
但是,当我实际尝试使用HTTPoison获取新的访问令牌时:
HTTPoison.post refresh_url, grants, refresh_headers
我收到以下错误:
{
"errors": [
{
"errorType": "invalid_grant",
"message": "Refresh token invalid: my_refresh_token. Visit https://dev.fitbit.com/docs/oauth2 for more information on the Fitbit Web API authorization process."
}
],
"success": false
}
另外,我完全确定刷新令牌本身是100%正确的。我确定它还没有用于刷新访问令牌。但只是为了确定,我删除了所有现有的令牌,并通过了新的授权代码授权流程,然后使用该刷新令牌尝试发布另一个访问令牌。
我在这里缺少什么?谢谢!