【发布时间】:2020-02-17 20:54:41
【问题描述】:
我正在试验 R,我想知道如何使用库 httr 或 rcurl 从 API 获取一些数据..
例如,在终端中使用 curl 我可以做到这一点,它会得到我想要的数据:
curl -X GET "https://some.webpage.com/api/v1/accounts/self/profile" -H "accept: application/json" -H "token-auth: 72124asfin393483feifefi92835w345"
注意:令牌密钥是随机字符集
不幸的是,当我尝试在 R 中重现这个失败时,我尝试使用类似的东西:
> library(httr)
> c <- GET("https://some.webpage.com/api/v1/accounts/self/profile?token- auth=72124asfin393483feifefi92835w345"
或者这个:
> url = "https://some.webpage.com/api/v1/accounts/self/profile"
> key = "{72124asfin393483feifefi92835w345}"
> a <- GET(url, add_headers(Authorization = paste("Bearer", key, sep = " ")))
不幸的是,当我在 Rstudio 中尝试此操作时,我总是收到此错误:
[1] "'token-auth' has to be provided for authentication."
有关此特定 API 调用的更多信息:
所以我想我显然在 url 组合上做错了,我如何让它与 R 一起使用?我很困惑,我在 R 中找到了一些关于 API 的文档,但没有解释如何使用令牌。谢谢
【问题讨论】:
-
并非所有 Web API 都相同。您需要阅读您尝试访问的特定 API 的文档。无论您使用的 API 不使用 Authorization 标头,而是希望令牌以其他方式传递,机会都很大。为了获得帮助,您需要提供某种可重现的示例进行测试。或者至少确定具体的网站而不是“webpage.com”
-
然后试试
a <- GET(url, add_headers("token-auth" = key))。并确保您的密钥字符串中没有大括号。 -
(1) 将变量命名为
c是不好的做法,这可能是所有 R 中最常用的函数。(即使 R 通常足够聪明,可以使用 realc大部分时间。)(2)你在...?token- auth=7...中有空格是错字吗? (3) 在令牌的第一次使用中,您只有字母/数字,但在第二次使用中,它被大括号包围。这很重要吗? (4) 最后,当它说'token-auth' has to be provided...时,您提供的是Bearer而不是token-auth。是这样吗? -
@MrFicl 谢谢,这行得通 :) 我实际上尝试过,但我有一些错字,因此它不起作用,所以我发布了包含 Beared 而不是 token-authm 我的原始尝试将结果转换为 data.frame ,这正是我所需要的,所以再次感谢 :)
-
@r2evans 你是绝对正确的,(1)我明白,我会更好地命名我的变量,我正在学习,所以我没有考虑这个,(2)是的,这是一个错字, (3)我现在不确定,我尝试遵循文档并且令牌在那里被大括号包围,(4)是的,我明白了..我实际上在这一点上混合了两个文档,因此出现了错误。幸运的是,感谢你们,它现在可以工作了,我有更多信息!谢谢你,祝你有美好的一天!
标签: r access-token httr