接口调用凭证 /获取接口调用凭据

# 获取接口调用凭据

> 接口应在服务器端调用,详细说明参见[服务端API](https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/backend-api.html)。

## 接口说明

### 接口英文名

getAccessToken

### 功能描述

- 获取小程序全局唯一后台接口调用凭据,token有效期为7200s,开发者需要进行妥善保存。
- 如使用[云开发](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html),可通过[云调用](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html)免维护 access_token 调用。
- 如使用[云托管](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/basic/intro.html),也可以通过[微信令牌/开放接口服务](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/guide/weixin/open.html)免维护 access_token 调用。

## 调用方式

### HTTPS 调用

```text
GET https://api.weixin.qq.com/cgi-bin/token 
```

### 请求参数

| 属性       | 类型   | 必填 | 说明                                                         |
| :--------- | :----- | :--- | :----------------------------------------------------------- |
| grant_type | string | 是   | 填写 client_credential                                       |
| appid      | string | 是   | 小程序唯一凭证,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态) |
| secret     | string | 是   | 小程序唯一凭证密钥,即 AppSecret,获取方式同 appid           |

### 返回参数

| 属性         | 类型   | 说明                                           |
| :----------- | :----- | :--------------------------------------------- |
| access_token | string | 获取到的凭证                                   |
| expires_in   | number | 凭证有效时间,单位:秒。目前是7200秒之内的值。 |

## 其他说明

### access_token 的存储与更新

- `access_token` 的存储至少要保留 512 个字符空间;
- `access_token` 的有效期目前为 **2 个小时**,需定时刷新,重复获取将导致上次获取的 `access_token` 失效;
- 建议开发者使用中控服务器统一获取和刷新 `access_token`,其他业务逻辑服务器所使用的 `access_token` 均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致 `access_token` 覆盖而影响业务;
- `access_token` 的有效期通过返回的 `expires_in` 来传达,目前是7200秒之内的值,中控服务器需要根据这个有效时间提前去刷新。在刷新过程中,中控服务器可对外继续输出的老 `access_token`,此时公众平台后台会保证在5分钟内,新老 `access_token` 都可用,这保证了第三方业务的平滑过渡;
- `access_token` 的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新 `access_token` 的接口,这样便于业务服务器在 API 调用获知 `access_token` 已超时的情况下,可以触发 `access_token` 的刷新流程。

> 详情可参考微信公众平台文档 [《获取access_token》](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183)

### 免维护 access_token 的场景

如果使用了[云托管](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/basic/intro.html)或[云开发](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html),可以免维护 access_token,免鉴权直接调用服务端接口。

云托管:

- 通过[微信令牌](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/guide/weixin/token.html)免维护 access_token 发起服务端调用,在调用微信服务端接口时,将 URL 上的 access_token 参数改成 cloudbase_access_token,值通过微信令牌取得。
- 调用[微信支付](https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/basic/openapi/wxpay.html)也可以免维护鉴权和支付证书信息,避免证书泄漏风险。

云开发:

- 通过[云开发云调用](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html)免维护 access_token 调用。
- 调用[微信支付](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/wechatpay/wechatpay.html)也可以免维护鉴权和支付证书信息,避免证书泄漏风险。

### 在线调试

开发者可以使用[网页调试工具](https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=基础支持&form=获取access_token接口 /token&token=&lang=zh_CN)调试该接口

## 调用示例

> 示例说明: HTTPS调用示例

### 请求数据示例

```text
GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 
```

### 返回数据示例

```json
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200
} 
```

### 错误码

| 错误码 | 错误码取值                                              | 解决方案                                                     |
| :----- | :------------------------------------------------------ | :----------------------------------------------------------- |
| -1     | system error                                            | 系统繁忙,此时请开发者稍候再试                               |
| 40001  | invalid credential access_token isinvalid or not latest | 获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的公众号调用接口 |
| 40013  | invalid appid                                           | 不合法的 AppID ,请开发者检查 AppID 的正确性,避免异常字符,注意大小写 |