r - 如何从 R 调用亚马逊产品广告 API 5?
问题描述
我想从 R 调用亚马逊产品广告 API。下面是 pa API 5 的快速指南。
https://webservices.amazon.com/paapi5/documentation/quick-start/using-curl.html
我尝试按照此处描述的方式使用“httr” https://webservices.amazon.com/paapi5/documentation/sending-request.html ,但在签名版本 4 签名过程中被抛弃了。
在调用 POST 函数之前,我尝试使用“aws.signature”包进行签名,但我得到的最终输出是状态码 500。
这是我使用的代码
library(httr)
library(jsonlite)
library(aws.signature)
request_body=data.frame("Keywords"="Harry",
"Marketplace"= "www.amazon.com",
"PartnerTag"= "mytag-20",
"PartnerType"= "Associates",
"Access Key"="my_accesskey",
"Secret Key"="my_secret_key",
"service"="ProductAdvertisingAPIv1",
"Region"="us-east-1"
"Resources"="Offers.Listings.Price",
"SearchIndex"= "All")
request_body_json=toJSON(request_body,auto_unbox=T)
request_body_json=gsub("\\[|\\]","",request_body_json)
t=signature_v4_auth(
datetime = format(Sys.time(), "%Y%m%dT%H%M%SZ", tz = "UTC"),
region = NULL,
service="ProductAdvertisingAPIv1",
verb="POST",
"com.amazon.paapi5.v1.ProductAdvertisingAPIv1.SearchItems",
query_args = list(),
canonical_headers=c("Host: webservices.amazon.com",
"Content-Type: application/json; charset=UTF-8",
"X-Amz-Target: com.amazon.paapi5.v1.ProductAdvertisingAPIv1.SearchItems",
"Content-Encoding: amz-1.0",
"User-Agent: paapi-docs-curl/1.0.0"),
request_body=request_body_json,
signed_body = TRUE,
key = "access_key",
secret = "secret-key",
session_token = NULL,
query = FALSE,
algorithm = "AWS4-HMAC-SHA256",
force_credentials = FALSE,
verbose = getOption("verbose", FALSE)
)
result=POST("https://webservices.amazon.com/paapi5/searchitems",body=request_body_json,
add_headers(.headers=c("Host: webservices.amazon.com",
"Content-Type: application/json; charset=UTF-8",
paste("X-Amz-Date:",format(Sys.time(), "%Y%m%dT%H%M%SZ", tz = "UTC")),
"X-Amz-Target: com.amazon.paapi5.v1.ProductAdvertisingAPIv1.SearchItems",
"Content-Encoding: amz-1.0",
"User-Agent: paapi-docs-curl/1.0.0",
paste0("Authorization: AWS4-HMAC-SHA256 Credential=",t[["Credential"]],"SignedHeaders=content-encoding;host;x-amz-date;x-amz-target Signature=",t[["Signature"]])
)))
如果有人可以帮助解决这个问题,我们将不胜感激。谢谢
解决方案
推荐阅读
- python - Scrapinghub 导出多个项目
- python - 迷宫换屏
- arrays - 过滤多面数组,但管道返回错误 - 找不到类型为“object”的不同支持对象“[object Object]”
- docker - 我在哪里放置 Docker 文件?
- excel - 是/否循环有多个问题
- json - 解析的 JSON 长时间没有在 api 调用上更新
- java - 在句子/字符串中查找子字符串
- c# - System.DirectoryServices.AccountManagement.Principal.FindByIdentity 中引发异常
- google-colaboratory - 在 google Jupyter Notebook 上安装 CERN ROOT
- ruby-on-rails - Ruby on Rails 在服务器启动时不会注册 active_admin (http://localhost:3001/admin)