在R中调用USPS API遇401授权错误(无效令牌)求助
解决USPS Tracking V3 API的R语言授权问题
USPS Tracking V3 API采用OAuth2客户端凭证授权,不是你之前用的基础HTTP认证(authenticate()函数),这是导致401错误的核心原因。以下是完整的R语言实现步骤:
1. 获取Access Token
首先需要用你的USERID(作为client_id)和密码(作为client_secret)请求临时访问令牌:
library(httr) library(jsonlite) # 替换为你的USERID和密码 client_id <- "YOUR_USPS_USERID" client_secret <- "YOUR_USPS_PASSWORD" # 请求Token token_response <- POST( url = "https://apis-tem.usps.com/oauth2/v3/token", body = list( grant_type = "client_credentials", client_id = client_id, client_secret = client_secret ), encode = "form" ) # 解析Token token_data <- fromJSON(content(token_response, "text")) access_token <- token_data$access_token
2. 调用Tracking API查询物流信息
拿到access_token后,在请求头中携带Authorization: Bearer {access_token}即可调用追踪接口:
# 替换为你的20位追踪号码 tracking_number <- "YOUR_TRACKING_NUMBER" # 请求追踪信息 tracking_response <- GET( url = paste0("https://apis-tem.usps.com/tracking/v3/tracking/", tracking_number, "?expand=summary"), add_headers(Authorization = paste("Bearer", access_token)) ) # 解析响应结果 tracking_result <- fromJSON(content(tracking_response, "text")) print(tracking_result)
关键注意事项
- 测试环境使用
apis-tem.usps.com,生产环境切换为apis-usps.com - Access Token有有效期(默认3600秒),如果需要多次调用,建议缓存token并在过期前重新获取
- 确认你的USERID和密码是从USPS Web Tools注册获取的有效凭证
内容的提问来源于stack exchange,提问作者Alex G.
相关产品推荐
相关产品推荐

