OAuth的认证使用到Fitbit HTTR(Oauth authentification to F

2019-06-27 15:06发布

我试图连接到使用该API fitbit HTTR库 。

使用提供的例子,我想出了下面的代码:

library(httr)

key <- '<edited>'
secret <- '<edited>'
tokenURL <- 'http://api.fitbit.com/oauth/request_token'
accessTokenURL <- 'http://api.fitbit.com/oauth/access_token'
authorizeURL <- 'https://www.fitbit.com/oauth/authorize'

fbr <- oauth_app('fitbitR',key,secret)
fitbit <- oauth_endpoint(tokenURL,authorizeURL,accessTokenURL)

token <- oauth1.0_token(fitbit,fbr)
sig <- sign_oauth1.0(fbr,
    token=token$oauth_token,
    token_secret=token$oauth_token_secret
)

我得到的验证完成。 从HTTR消息,但在尝试访问的API,然后抛出一个错误信息

GET("http://api.fitbit.com/1/user/-/activities/date/2012-08-29.json", sig)
Response [http://api.fitbit.com/1/user/-/activities/date/2012-08-29.json]
  Status: 401
  Content-type: application/x-www-form-urlencoded;charset=UTF-8
{"errors":[{"errorType":"oauth","fieldName":"oauth_access_token","message":"Invalid signature or token '<edited>' or token '<edited>'"}]} 

什么问题可能是任何线索?

Answer 1:

这个问题是从HTTR库,使用curlEscape编码PARAMATERS而OAuth的1.0规范要求百分号编码(见本页 )。

与curlPercentEncode更换调用curlEscape解决的问题!

非常感谢@标志-S对他的帮助。



Answer 2:

我注意到的唯一的事情是,你的电话,以获得签名比HTTR例子略有不同。 该HTTR的例子是:

sig <- sign_oauth1.0(myapp, token$oauth_token, token$oauth_token_secret)

当你的代码是:

sig <- sign_oauth1.0(fbr,
    token=token$oauth_token,
    token_secret=token$oauth_token_secret
)

你所需要的“令牌=”和“token_secret =”在您的代码?



文章来源: Oauth authentification to Fitbit using httr