eBay API OAuth 认证流程
eBay 所有 API 调用都需要 OAuth 2.0 认证。本文详解从获取 access token 到刷新 token 的完整流程。
两种 Token 类型
| 类型 | 用途 | 有效期 |
|---|---|---|
| Application Token | 只读访问(Browse、Taxonomy) | 2 小时 |
| User Token | 读写访问(上架、订单管理) | 2 小时(可刷新) |
一、获取 Application Token(最简单)
用于只读 API(Browse、Taxonomy),不需要用户授权,用 Client Credentials 模式直接获取。
POST https://api.ebay.com/identity/v1/oauth2/token
Headers:
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(AppID:CertID)
Body:
grant_type=client_credentials
scope=https://api.ebay.com/oauth/api_scope Node.js 示例:
import axios from 'axios';
async function getAppToken() {
const auth = Buffer.from(APP_ID + ':' + CERT_ID).toString('base64');
const resp = await axios.post(
'https://api.ebay.com/identity/v1/oauth2/token',
'grant_type=client_credentials&scope=https://api.ebay.com/oauth/api_scope',
{
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic ' + auth,
},
}
);
return resp.data.access_token; // 有效期 2 小时
} 二、获取 User Token(需要用户授权)
用于读写 API(Inventory、Order、Fulfillment),需要走完整的 OAuth 2.0 授权码流程。
步骤 1:引导用户授权
GET https://auth.ebay.com/oauth2/authorize
?client_id=YOUR_APP_ID
&redirect_uri=YOUR_CALLBACK_URL
&response_type=code
&scope=YOUR_SCOPES
&state=RANDOM_STRING 步骤 2:用授权码换 Token
POST https://api.ebay.com/identity/v1/oauth2/token
Body:
grant_type=authorization_code
code=AUTH_CODE_FROM_STEP1
redirect_uri=YOUR_CALLBACK_URL 步骤 3:刷新 Token
POST https://api.ebay.com/identity/v1/oauth2/token
Body:
grant_type=refresh_token
refresh_token=SAVED_REFRESH_TOKEN
scope=YOUR_SCOPES Token 管理最佳实践
- Application Token 过期前 5 分钟刷新即可,不用太频繁
- User Token 的 Refresh Token 要安全存储
- 不要把 Token 写在前端代码里,只能在后端使用
- scope 权限遵循最小化原则,只申请需要的
声明:本文为非官方中文教程。