本文简述微信第三方平台接入
文章目录
- 平台接入分三个阶段
- 1. 第一阶段 基础建设
- 2. 第二阶段 授权流程
- 步骤一、前往微信开放平台-第三方平台-详情-开发配置,完成权限集与开发资料的配置。
- 步骤二、调用接口获取预授权码(pre_auth_code),接口详情请查看[api_create_preauthcode](https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/ThirdParty/token/pre_auth_code.html)
- 步骤三、准备“授权回调 URI”,然后按照官方文档规则生成PC端的授权二维码或者移动端的授权链接,详情请看下方说明
- 步骤四、公众号/小程序管理员扫码或者访问移动端授权链接,确认同意授权给第三方平台。(如果该第三方平台账号尚未全网发布,则需要先将要用于测试的公众号或者小程序加入第三方平台-开发资料的“授权测试公众号/小程序列表”。)
- 步骤五、管理员授权确认之后,授权页会自动跳转进入回调 URI,并在 URL 参数中返回授权码和过期时间(redirect_url?auth_code=xxx&expires_in=600)。
- 步骤六、调用接口生成authorizer_access_token,然后以该token调用公众号或小程序的相关 API
- 第三阶段 代公众号(小程序)调用接口/代公众号网页授权
- 附 注意点:
平台接入分三个阶段
1. 第一阶段 基础建设
根据需求申请第三方开发平台, 并配置权限以及开发资料等, 开发资料相关信息
2. 第二阶段 授权流程
授权流程如下:
步骤一、前往微信开放平台-第三方平台-详情-开发配置,完成权限集与开发资料的配置。
步骤二、调用接口获取预授权码(pre_auth_code),接口详情请查看api_create_preauthcode
预授权码(pre_auth_code)是第三方平台方实现授权托管的必备信息,每个预授权码有效期为 1800秒。需要先获取令牌才能调用。
请求地址:
POST https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=COMPONENT_ACCESS_TOKEN
请求参数
{
"component_appid": "appid_value"
}
结果参数
{
"pre_auth_code": "Cx_Dk6qiBE0Dmx4EmlT3oRfArPvwSQ-oa3NL_fwHM7VI08r52wazoZX2Rhpz1dEw",
"expires_in": 600
}
其中请求参数 component_access_token, 需要令牌接口获取,接口详情请查看component_access_token
令牌(component_access_token)是第三方平台接口的调用凭据。令牌的获取是有限制的,每个令牌的有效期为 2 小时,请自行做好令牌的管理,在令牌快过期时(比如1小时50分),重新调用接口获取。
请求地址
POST https://api.weixin.qq.com/cgi-bin/component/api_component_token
请求参数
{
"component_appid": "appid_value" ,
"component_appsecret": "appsecret_value",
"component_verify_ticket": "ticket_value"
}
结果参数
{
"component_access_token": "61W3mEpU66027wgNZ_MhGHNQDHnFATkDa9-2llqrMBjUwxRSNPbVsMmyD-yq8wZETSoE5NQgecigDrSHkPtIYA",
"expires_in": 7200
}
其中component_verify_ticket是由微信后台推送的 ticket,在第三方平台创建审核通过后,微信服务器会向其 “授权事件接收URL” 每隔 10 分钟以 POST 的方式推送 component_verify_ticket。 接口详情请查看验证票据component_verify_ticket
步骤三、准备“授权回调 URI”,然后按照官方文档规则生成PC端的授权二维码或者移动端的授权链接,详情请看下方说明
授权链接拼接方式
版本 | 使用场景 |
---|---|
PC版 | https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx&auth_type=xxx |
H5版-新版 | https://open.weixin.qq.com/wxaopen/safe/bindcomponent?action=bindcomponent&no_scan=1&component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx&auth_type=xxx&biz_appid=xxxx#wechat_redirect |
H5版-旧版 | https://mp.weixin.qq.com/safe/bindcomponent?action=bindcomponent&no_scan=1&component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx&auth_type=xxx&biz_appid=xxxx#wechat_redirect |
步骤四、公众号/小程序管理员扫码或者访问移动端授权链接,确认同意授权给第三方平台。(如果该第三方平台账号尚未全网发布,则需要先将要用于测试的公众号或者小程序加入第三方平台-开发资料的“授权测试公众号/小程序列表”。)
步骤五、管理员授权确认之后,授权页会自动跳转进入回调 URI,并在 URL 参数中返回授权码和过期时间(redirect_url?auth_code=xxx&expires_in=600)。
步骤六、调用接口生成authorizer_access_token,然后以该token调用公众号或小程序的相关 API
Step 1: 获得authorization_code后,按照使用授权码换取公众号或小程序的接口调用凭据和授权信息 接口文档 ,调接口获取authorizer_refresh_token
POST https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=COMPONENT_ACCESS_TOKEN
请求参数
{
"component_appid":"appid_value" ,
"authorization_code": "auth_code_value"
}
结果参数
{
"authorization_info": {
"authorizer_appid": "wxf8b4f85f3a794e77",
"authorizer_access_token": "QXjUqNqfYVH0yBE1iI_7vuN_9gQbpjfK7hYwJ3P7xOa88a89-Aga5x1NMYJyB8G2yKt1KCl0nPC3W9GJzw0Zzq_dBxc8pxIGUNi_bFes0qM",
"expires_in": 7200,
"authorizer_refresh_token": "dTo-YCXPL4llX-u1W1pPpnp8Hgm4wpJtlR6iV0doKdY",
"func_info": [
{
"funcscope_category": {
"id": 1
}
},
{
"funcscope_category": {
"id": 2
}
},
{
"funcscope_category": {
"id": 3
}
}
]
}
}
Step 2: 获得authorizer_refresh_token后,按照获取/刷新授权公众号或小程序的接口调用凭据 接口文档 ,调接口获取authorizer_access_token
请求地址
POST https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=COMPONENT_ACCESS_TOKEN
请求参数
{
"component_appid": "appid_value",
"authorizer_appid": "auth_appid_value",
"authorizer_refresh_token": "refresh_token_value"
}
结果参数
{
"authorizer_access_token": "some-access-token",
"expires_in": 7200,
"authorizer_refresh_token": "refresh_token_value"
}
注意: authorizer_access_token 有效期为 2 小时,开发者需要缓存 authorizer_access_token,避免获取/刷新接口调用令牌的 API 调用触发每日限额。
第三阶段 代公众号(小程序)调用接口/代公众号网页授权
3.1 第三方平台代公众号/小程序调用接口指的是,第三方平台在获得公众号/小程序管理员的授权之后,第三方平台则可以以公众号/小程序的身份调用已获得权限的接口。
如何代商家调用接口
简单可以理解为公众号和小程序的api,服务商都可以调用,只是服务商调用的时候要使用authorizer_access_token,而不是access_token。
3.2 代公众号发起网页授权
参考文档 代公众号发起网页授权
注:网页授权不需要上面授权成功后获取的authorizer_access_token
附 注意点:
1.授权二维码,推荐使用授权链接H5的方式,放在公众号让需要授权的商家直接点击该链接生成。 如使用PC端链接,非直接拼接就可以使用, 微信会判断上游refer为同一一级域名,需将其放置一级域名下的PC网页。
2.加解密
参考:消息加解密技术介绍
异常 java.security.InvalidKeyException:illegal Key Size 的解决方案:在官方网站下载 JCE 无限制权限策略文件。
3. 网页授权请求CODE时报错“redirect_uri域名与后台配置不一致”
第三方平台在代公众号做网页授权时需要配置公众号开发域名, 同时需要将校验文件下载并放置在域名根目录下。
参考: