Fitbit OAuth2刷新令牌返回invalid_grant

时间:2017-11-23 15:12:44

标签: oauth elixir phoenix-framework fitbit

我正在尝试使用刷新令牌刷新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%正确的。我确定它还没有用于刷新访问令牌。但只是为了确定,我删除了所有现有的令牌,并通过了新的授权代码授权流程,然后使用该刷新令牌尝试发布另一个访问令牌。

我在这里缺少什么?谢谢!

0 个答案:

没有答案