如何获取Ebay Media API的OAuth令牌实现无人工干预批量视频查询
解决Ebay Media API令牌自动化获取及复用问题
核心方案:基于Refresh Token的持久化授权流程
采用OAuth2授权码流程的持久化模式,通过一次手动授权获取18个月有效期的refresh token,后续完全通过脚本自动刷新access token,无需人工干预。
步骤1:首次手动获取Refresh Token(仅需执行一次)
- 构造授权URL,确保请求参数包含媒体API所需权限(如
https://api.ebay.com/oauth/api_scope/item.readonly),并强制获取refresh token:https://auth.ebay.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code&scope=https://api.ebay.com/oauth/api_scope/item.readonly&prompt=login - 在浏览器打开该URL完成授权,从回调URL中提取
code参数。 - 用此
code换取access token和refresh token,发送POST请求到Ebay OAuth令牌端点:curl -X POST "https://api.ebay.com/identity/v1/oauth2/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=authorization_code&code=YOUR_AUTH_CODE&redirect_uri=YOUR_REDIRECT_URI&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET" - 将返回结果中的
access_token(有效期2小时)和refresh_token(有效期18个月)加密存储到安全位置(如环境变量、加密配置文件)。
步骤2:脚本自动化刷新Access Token
每次调用Ebay API前,通过refresh token获取新的access token(无需人工操作):
curl -X POST "https://api.ebay.com/identity/v1/oauth2/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=refresh_token&refresh_token=YOUR_REFRESH_TOKEN&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
新获取的access token在2小时有效期内可重复调用多次API,解决你之前“同一token查询多个商品报错”的问题——你之前错误地重复使用一次性的code换取token,而非复用有效access token或用refresh token刷新。
步骤3:配置Cron任务实现全自动化
修改你的商品同步脚本,增加以下逻辑:
- 先执行refresh token换access token的操作
- 用新token调用
getItem接口获取视频ID及URL - 生成CSV后触发WP All Import导入
将脚本添加到服务器cron任务,比如每天凌晨执行:
0 0 * * * /usr/bin/python3 /path/to/your/ebay-woocommerce-sync.py >> /var/log/ebay-sync.log 2>&1
关键注意事项
- 权限范围:授权时的
scope必须覆盖媒体API所需权限,否则会出现权限不足错误。 - Token存储:refresh token为敏感信息,必须加密存储,禁止明文暴露。
- 错误处理:脚本需添加异常捕获逻辑,当refresh token过期(18个月后)时触发告警,提醒重新手动授权一次。
内容的提问来源于stack exchange,提问作者Anibal Mauricio
相关产品推荐
相关产品推荐

