“你必须提供一个哈希值。”使用 API 下载数据时出错(在 R 中)
Posted
技术标签:
【中文标题】“你必须提供一个哈希值。”使用 API 下载数据时出错(在 R 中)【英文标题】:"You must provide a hash." error when using API to download data (in R) 【发布时间】:2015-02-26 13:17:44 【问题描述】:我想通过 API 代码从 MARVEL DEVELOPER 中提取数据并分析它(使用 R)。
我从 MARVEL 网站获得了以下网址:http://gateway.marvel.com:80/v1/public/characters?apikey=f389fcb49ad574e10ca570867f4bfa43
我使用httr包收集数据:
install.packages("httr")
library(httr)
> url <- GET("http://gateway.marvel.com:80/v1/public/characters?orderBy=name&limit=100&apikey=f389fcb49ad574e10ca570867f4bfa43")
> content(url)
$code
[1] "MissingParameter"
$message
[1] "You must provide a hash."
我想将所有这些数据提取到 R。我应该做什么/阅读什么?
谢谢。
【问题讨论】:
您在注册时收到哈希了吗?显然你应该把它传递给你的请求developer.marvel.com/documentation/generalinfo 【参考方案1】:您必须提供 ts(时间戳)和 hash 参数。哈希为(根据documentation)= md5(ts+privateKey+publicKey)
您可以使用以下方法计算 md5:
library(digest)
hash <- digest(paste0(ts, privateKey, publicKey), algo="md5")
服务器端应用程序除了apikey参数外,还必须传递两个参数:
ts - 时间戳(或其他可以根据请求更改的长字符串)
hash - ts 参数、你的私钥和你的公钥的 md5 摘要
密钥(例如 md5(ts+privateKey+publicKey) 例如,具有“1234”公钥和“abcd”私钥的用户可以构造如下有效调用:
http://gateway.marvel.com/v1/public/comics?ts=1&apikey=1234&hash=ffd275c5130566a2916217b101f26150 (哈希值为1abcd1234的md5摘要)
【讨论】:
【参考方案2】:你需要有以下组合 ts+ 你的私钥+ 你的公钥
请查看 MARVEL 中的以下示例:
例如,具有公钥“1234”和私钥“abcd”的用户可以构造如下有效调用:http://gateway.marvel.com/v1/public/comics? ts=1&apikey=1234&hash=ffd275c5130566a2916217b101f26150(哈希值为1abcd1234的md5摘要)
ts -1 私钥- abcd 公钥 - 1234
【讨论】:
【参考方案3】:其他答案中描述的哈希仅在您使用私钥时使用。
可以通过添加引用者以您尝试的方式使用公钥:
curl --referer localhost http://gateway.marvel.com:80/v1/public/characters?apikey=f389fcb49ad574e10ca570867f4bfa43
我不知道R
,所以必须发送curl
请求。
在您的开发者帐户中,您可以列出允许的推荐人。我有本地主机,但你的可以是任何...
【讨论】:
以上是关于“你必须提供一个哈希值。”使用 API 下载数据时出错(在 R 中)的主要内容,如果未能解决你的问题,请参考以下文章
React 无法使用 Fetch API 下载数据 [重复]
当我想下载时,我在哪里可以正确使用 API“chrome.downloads”?