我正在try 使用HTTR包从Amazon SP API检索数据. 到目前为止,我所做的是:

(0)必备条件

library(httr)
library(httr2)
library(jsonlite)
library(lubridate)

(1)数据定义为:

data = list(
  grant_type = "refresh_token",
  refresh_token = "Atzr|...",
  client_id = "amzn1...",
  client_secret = "amzn1....")

获取(2)作为POST请求响应的"access_token"值:

token_response = httr::POST(
  url = "https://api.amazon.com/auth/o2/token",
  body = data) 

access_token = fromJSON(token_response)[["access_token"]]

我还(3)定义了请求参数:

markentplace_endpoint = "https://sellingpartnerapi-eu.amazon.com"
marketplace_id = "A1PA6795UKMFR9"

request_params = list(
  "MarketplaceId" = marketplace_id, 
  "CreatedAfter" = as_date(Sys.Date()-30))

和(4)和URL字符串:

url = paste0(markentplace_endpoint, "/orders/v0/orders")
url$query = request_params
url = paste0(paste0(markentplace_endpoint, "/orders/v0/orders"), url_build(url))

最后(5)发出GET请求

httr::GET(
  url = paste0(paste0(markentplace_endpoint, "/orders/v0/orders"), url_build(url)), 
  add_headers(`x-amz-access-token` = access_token))

最后,我已经陷入了步骤2,因为我从POST请求中得到了以下响应:

Response [https://api.amazon.com/auth/o2/token]
  Date: 2024-01-07 12:13
  Status: 400
  Content-Type: application/json;charset=UTF-8
  Size: 392 B

我基本上是在遵循这https://www.youtube.com/watch?v=gp5kTI8I3pU个教程,并试图适应R/R Studio.

有谁有更丰富的经验,愿意分享吗?

推荐答案

400响应代码通常表示您发送的请求格式不正确.默认情况下,httr::POST函数将正文编码为multipart/form-data("多部分").Amazon API特别要求使用application/x-www-form-urlencoded("表单")对数据进行编码.所以为了得到正确的回答,你会使用

token_response <- httr::POST(
  url = "https://api.amazon.com/auth/o2/token",
  encode = "form",
  body = data) 

R相关问答推荐

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

如何根据组大小应用条件过滤?

如何在一次运行中使用count进行多列计数

为什么我的基准测试会随着样本量的增加而出现一些波动?

如何在ggplot2中绘制具有特定 colored颜色 的连续色轮

如何在R中通过多个变量创建交叉表?

如何将使用rhandsontable呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

查找所有站点的最小值

如何将一列中的值拆分到R中各自的列中

有没有办法定制Plot(allEffects())面板标题?

多元正态分布的计算

在散点图中使用geom_point放置线图例

使用ifElse语句在ggploy中设置aes y值

基于R中的辅助向量中的值有条件地连接向量中的字符串

如何在条形图中的x和填充变量中包含多个响应变量?

如果极点中存在部分匹配,则替换整个字符串

为什么R列名称忽略具有指定名称的向量,而只关注索引?

删除r中每个因素级别的最后2行

臭虫?GradeThis::grade_this_code()在`-code-check`块中失败

具有某些列的唯一值的数据帧