1. 第三方服务商模式与普通模式对比
普通模式:
- 客户向腾讯公益申请注册应用,获取appid和密钥,然后给appid申请接口权限,审批通过后用“appid+密钥”构造签名调用接口
- 该模式下,客户只能访问自己应用下的数据(客户appid记为B、C、D...)
第三方服务商模式:
- 第三方服务商仍需向腾讯公益申请注册应用,获取appid和密钥(服务商appid记为A)
- 该模式下,客户可以把自己的应用授权第三方服务商,即把B、C、D授权给A,然后A可以访问B、C、D的数据
申请注册应用地址:点击查看
2. 第三方服务商授权流程
2.1 生成临时授权码
- 如果第三方服务商是首次接入,请先申请注册应用
- 目前,客户应用授权给第三方服务商,只能由公益研发手动执行,然后将临时授权码(auth_code)给到第三方服务商
- 先用临时授权码换永久授权码
- 再用永久授权码换客户授权access_token
- 最后使用access_token访问客户数据
2.2 用临时授权码换永久授权码
调用凭证: 应用签名(第三方服务商需要用自己的appid和密钥构造签名)
请求方式: POST(HTTPS)
请求地址: https://test-oapi.gongyi.qq.com/api/app_auth_agent/GetGyOpenPermanentCode
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
auth_code | string | 是 | 临时授权码,十分钟有效期(过期需要重新生成) |
- body参数示例
{
"auth_code": "abc123"
}
返回参数:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回码 0:表示成功,其他值表示错误,错误信息在msg中 |
data.permanent_code | string | 永久授权码(永久有效,直到客户收回授权) |
data.auth_info | object | 客户授权信息 |
data.auth_info.gy_appid | string | 授权方appid |
data.auth_info.org_id | string | 授权方机构id |
data.auth_info.corpid | string | 授权方企微id(可选,只有企微场景下返回) |
data.auth_info.corp_name | string | 授权方企微名称(可选,只有企微场景下返回) |
返回示例:
{
"code": 0,
"data": {
"auth_info": {
"gy_appid": "gy_xxx",
"org_id": "123456",
"corp_name": "",
"corpid": ""
},
"permanent_code": "F95273B0F39F12DB4F856D76DA4EC42019CC07A8B94B9953351D13C2414BE3F2"
},
"msg": "Success",
"op_time": 1743662561,
"trace_id": "1c1f5facda612345678f1ae24acec3f5"
}
2.3 用永久授权码换客户授权access_token
调用凭证: 应用签名(第三方服务商需要用自己的appid和密钥构造签名)
请求方式: POST(HTTPS)
请求地址: https://test-oapi.gongyi.qq.com/api/app_auth_agent/GetGyOpenAuthAccessToken
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
permanent_code | string | 是 | 永久授权码 |
auth_gy_appid | string | 是 | 授权方appid |
auth_corpid | string | 否 | 授权方企微id(只有企微场景下需要填写) |
- body参数示例
{
"permanent_code": "xxxxxxxxxxxxxxx",
"auth_gy_appid": "gy_xxx",
"auth_corpid": ""
}
返回参数:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回码 0:表示成功,其他值表示错误,错误信息在msg中 |
data.access_token | string | 客户授权access_token(一般两小时有效期,过期后仍用本接口刷新) |
data.expires_in | int64 | 过期时间(秒,int64会转成string返回) |
返回示例:
{
"code": 0,
"data": {
"access_token": "6c9023a39c2c9514ba4588b83d5f7f7a0ebebd6fc67acf5d82948989c228249249dee95a4ba2ba494a319f3054c6707b4c06e547ed82b723b39d9351cc4a4d12",
"expires_in": "7200"
},
"msg": "Success",
"op_time": 1742304395,
"trace_id": "be84781f9bba7d3d120b36e912345678"
}
2.4 用access_token访问客户数据
- 第三方服务商用授权access_token调用开放接口,在header头里鉴权参数只用传两个
- Gy-H-Api-Access-Type // 鉴权类型(固定填1即可),0-普通客户 1-第三方服务商
- Gy-H-Api-Access-Token // 客户授权access_token
- 第三方服务商用授权access_token调用接口,等同于客户自己用“appid+密钥”签名调用
- 两种方式下调用接口,除了header头里鉴权参数不同,其他参数和接口输入输出完全相同
注意:第三方服务商能调的接口,都是客户已有权限的接口