获取access_token(含代码示例)
简要描述
- 调用该接口获取 access_token
注意事项(必读
)
access_token 是小鹅通开放api的全局唯一接口调用凭据,店铺调用各接口时都需使用 access_token ,开发者需要进行妥善保管;
建议店铺开发者使用中控服务器统一获取和刷新 access_token ,其他业务逻辑服务器所使用的 access_token 均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token 覆盖而影响业务;
access_token的有效期目前为
2小时(7200秒)
,需定时刷新。重复获取将导致上次获取的 access_token 在5分钟
之后失效。 在刷新过程中,中控服务器可对外继续输出老的 access_token,在5
分钟内,新老 access_token 都可用,确保第三方业务能够平滑过渡;获取 access_token 的接口调用是有频率限制的,该接口的频率是
10分钟100次
,超出请求次数该接口须等下个10分钟才可以恢复调用。为了提高API接口的安全性,只有在ip白名单里面的ip,才能成功获取到access_token,否则拒绝访问。因此,调用接口前,请在云服务控制台中提前将服务器的ip添加到白名单中。
请求方式及url:
- 请求方式:
GET
- 接口地址:
https://api.xiaoe-tech.com/token
- 请求头:
Content-Type:application/json
- 频率限制:
10分钟100次
请求参数
参数名 | 必选 | 类型 | 说明 | 备注(示例) |
---|---|---|---|---|
app_id | 是 | string | 店铺的业务id | ... |
client_id | 是 | string | 应用的唯一标识,通过 client_id 来鉴别应用的身份 | 在云服务控制台获取 |
secret_key | 是 | string | 应用的凭证秘钥,即client_secret,用来保证应用来源的可靠性,防止被伪造 | 在云服务控制台获取 |
grant_type | 是 | string | 固定填写client_credential | ... |
注意:2019.12.9以前开通了API服务的商家,可以继续使用app_id+secret_key的方式获取access_token。后来开通的商家
请统一按照app_id+client_id+secret_key的方式获取
请求示例
{
"app_id": "appxxxxxxxxxxx",
"client_id": "xopxxxxxxxxxx",
"secret_key": "xxxxxxxxxxxxx",
"grant_type": "client_credential" //获取token时, grant_type = client_credential
}
返回示例
正确示例
{ "code": 0, "msg": "success", "data": { "access_token": "N2M5MGYXZWITMZIWMY0ZMWE1LTK3YJMTNGY2ZTQXODHINTK3", "expires_in": 7200 } }
错误示例
{ "code": 2001, "msg": "invalid secret_key", "data": null }
返回参数
参数名 | 必选 | 类型 | 说明 | 备注 |
---|---|---|---|---|
access_token | 是 | string | 凭证 | ... |
expires_in | 是 | int | 过期时间,单位秒 | ... |
备注
- 错误码请查看全局返回码。
获取access_token示例(php示例)
class TokenManage
{
...
const URL = "https://api.xiaoe-tech.com/token";
private $app_id = "appXXXXXXXXXX"; // 店铺的业务id
private $client_id = "xopXXXXXXXXXX"; // 应用的唯一标识
private $secret_key = "XXXXXXXXXX"; // 应用的凭证秘钥
private $grant_type = "client_credential";
public function requestToken(){
$params = [
"app_id" => $this->app_id,
"client_id" => $this->client_id,
"secret_key" => $this->secret_key,
"grant_type" => $this->grant_type
];
// 发起请求
$result = Http::curlGet(self::URL, $params);
if (!empty($result['body']) && $result['body']['code'] == 0) {
$this->writeFile($result['body']['data']);
return $result['body']['data']['access_token'];
}
return false;
}
...
}
获取access_token Demo下载(包含Go、PHP、Java、Python等)
获取access_token 的Demo:Github链接