使用R的httr包调用Shopify API获取开发店铺订单遇阻
解决httr调用Shopify API获取订单的问题
我来帮你排查下这个问题,我之前用httr对接Shopify API的时候也踩过类似的坑~你的代码主要有几个需要修正的地方,我一步步给你说:
1. 缺失HTTPS协议头
Shopify API强制要求使用HTTPS协议发起请求,你的URL里没有加https://,这会导致httr无法正确识别请求地址,直接抛出错误或者请求失败。
2. 确认私有应用权限
别忘了检查你的私有应用是否开启了读取订单(read_orders)的权限。在Shopify后台创建私有应用时,需要手动勾选对应的权限,否则即使认证信息正确,也会返回403禁止访问的错误。
修正后的完整代码
library(httr) apikey <- "foo" # 替换成你的实际API密钥 pass <- "bar" # 替换成你的实际私有应用密码 # 修正URL,添加HTTPS协议 shop_response <- GET( url = "https://my-test-store.myshopify.com/orders.json", authenticate(user = apikey, password = pass), # 添加User-Agent,Shopify推荐指定,避免被服务器拦截 user_agent("MyCustomShopifyApp/1.0") ) # 先检查请求状态码,快速定位问题 cat("请求状态码:", status_code(shop_response), "\n") # 如果状态码是200,解析返回的订单数据 if (status_code(shop_response) == 200) { orders_data <- content(shop_response, "parsed") print(orders_data$orders) } else { # 打印错误信息帮助排查 print(content(shop_response, "text")) }
调试小技巧
- 如果返回401 Unauthorized:检查API密钥和密码是否复制正确,私有应用的“API key”和“Password”是两个不同的字段,别搞混了。
- 如果返回403 Forbidden:回到Shopify后台的私有应用设置,确认已经勾选了
read_orders权限,保存后重新发起请求。 - 如果返回404 Not Found:检查店铺域名是否正确,确保没有拼写错误。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

