R中的API身份验证 - 无法将身份验证令牌作为标头传递

时间:2017-07-12 20:06:55

标签: r api httr

我希望使用httr包在R中做一个简单的GET请求(来自Aplos API)。我可以通过使用API​​密钥进行身份验证来获取临时令牌,但之后我得到了一个401"无法找到令牌"一旦尝试使用令牌发出实际的GET请求。非常感谢任何帮助!提前谢谢。

AplosURL <- "https://www.aplos.com/hermes/api/v1/auth/"
AplosAPIkey <- "XYZ"
AplosAuth <- GET(paste0(AplosURL,AplosAPIkey))
AplosAuthContent <- content(AplosAuth, "parsed")
AplosAuthToken <- AplosAuthContent$data$token
#This is where the error occurs
GET("https://www.aplos.com/hermes/api/v1/accounts",  
    add_headers(Authorization = paste("Bearer:", AplosAuthToken)))

这是API文档提供的Python代码段:

def api_accounts_get(api_base_url, api_id, api_access_token):
    # This should print a contact from Aplos.
    # Lets show what we're doing.
    headers = {'Authorization': 'Bearer: {}'.format(api_access_token)}
    print 'geting URL: {}accounts'.format(api_base_url)
    print 'With headers: {}'.format(headers)

    # Actual request goes here.
    r = requests.get('{}accounts'.format(api_base_url), headers=headers)
    api_error_handling(r.status_code)
    response = r.json()
    print 'JSON response: {}'.format(response)
    return (response)

1 个答案:

答案 0 :(得分:0)

在python示例中,auth代码块的返回是api_bearer_token,它被base64解码并且rsa解密(使用你的密钥)才能使用它。

...
api_token_encrypted = data['data']['token']
api_bearer_token = rsa.decrypt(base64.decodestring(api_token_encrypted), api_user_key)

return(api_bearer_token)

然后在api调用中使用该解码的令牌来获取帐户。

我看到的第二个问题是您的Authorization标头与示例的标头不匹配。具体来说,在#34; Bearer:&#34;

之后,你错过了空间
headers = {'Authorization': 'Bearer: {}'.format(api_access_token)}

VS

add_headers(Authorization = paste("Bearer:", AplosAuthToken)))

在解决这两个问题之后,您可以继续进行。

相关问题