微信第三方平台授权流程
1 获取推送的 component_verify_ticket,开放平台会每10分钟推送到授权事件接收URL里
授权事件接收URL 如:
https://crs-boss.vchangyi.com/open-platform/serve
2 获取 component_access_token
https://api.weixin.qq.com/cgi-bin/component/api_component_token post
POST数据示例:
{
"component_appid":"appid_value" ,
"component_appsecret": "appsecret_value",
"component_verify_ticket": "ticket_value"
}
请求参数说明
参数 | 说明 |
---|---|
component_appid | 第三方平台appid |
component_appsecret | 第三方平台appsecret |
component_verify_ticket | 微信后台推送的ticket,此ticket会定时推送,具体请见本页末尾的推送说明 |
返回结果示例
{
"component_access_token":"61W3mEpU66027wgNZ_MhGHNQDHnFATkDa9-2llqrMBjUwxRSNPbV",
"expires_in":7200
}
结果参数说明
参数 | 说明 |
---|---|
component_access_token | 第三方平台access_token |
expires_in | 有效期 |
3 获取预授权码 pre_auth_code
https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=xxx post
POST数据示例:
{
"component_appid":"appid_value"
}
请求参数说明
参数 | 说明 |
---|---|
component_appid | 第三方平台方appid |
返回结果示例
{
"pre_auth_code":"Cx_Dk6qiBE0Dmx4EmlT3oRfArPvwSQ-oa3NL_fwHM7VI08r52wazoZX2Rhpz1dEw",
"expires_in":600
}
结果参数说明
参数 | 说明 |
---|---|
pre_auth_code | 预授权码 |
expires_in | 有效期,为20分钟 |
4 引导进入授权页面
在任何一个html或者jsp页面,加一个按钮,按钮的响应地址为:
*该网址中第三方平台方需要提供第三方平台方appid、预授权码和回调URI
5 回调地址(第4步回调URI设置)
http://crs.boss.me/callback/authorize-access-token
6 授权后回调URI,得到授权码和过期时间授权流程完成后,会进入回调URI,并在URL参数中返回授权码和过期时间(redirect_url?auth_code=xxx&expires_in=600)
7 使用授权码换取公众号的授权信息(access_token、refresh_token)
https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=xxxx post
POST数据示例:
{
"component_appid":"appid_value" ,
"authorization_code": "auth_code_value"
}
请求参数说明
参数 | 说明 |
---|---|
component_appid | 第三方平台appid |
authorization_code | 授权code,会在授权成功时返回给第三方平台,详见第三方平台授权流程说明 |
返回结果示例
{
"authorization_info": {
"authorizer_appid": "wxf8b4f85f3a794e77",
"authorizer_access_token": "QXjUqNqfYVH0yBE1iI_7vuN_9gQbpjfK7hYwJ3P7xO",
"expires_in": 7200,
"authorizer_refresh_token": "dTo-YCXPL4llX-u1W1pPpnp8Hgm4wpJtlR6iV0doKdY",
"func_info": [
{
"funcscope_category": {"id": 1}
},
{
"funcscope_category": {"id": 2}
},
{
"funcscope_category": {"id": 3}
}
]
}
结果参数说明
参数 | 说明 |
---|---|
authorization_info | 授权信息 |
authorizer_appid | 授权方appid |
authorizer_access_token | 授权方令牌(在授权的公众号具备API权限时,才有此返回值) |
expires_in | 有效期(在授权的公众号具备API权限时,才有此返回值) |
authorizer_refresh_token | 刷新令牌(在授权的公众号具备API权限时,才有此返回值),刷新令牌主要用于公众号第三方平台获取和刷新已授权用户的access_token,只会在授权时刻提供,请妥善保存。 一旦丢失,只能让用户重新授权,才能再次拿到新的刷新令牌 |
func_info | 公众号授权给开发者的权限集列表(请注意,当出现用户已经将消息与菜单权限集授权给了某个第三方,再授权给另一个第三方时,由于该权限集是互斥的,后一个第三方的授权将去除此权限集,开发者可以在返回的func_info信息中验证这一点,避免信息遗漏),1到8分别代表: 消息与菜单权限集 用户管理权限集 帐号管理权限集 网页授权权限集 微信小店权限集 多客服权限集 业务通知权限集 微信卡券权限集 |
8 使用上一步的公众号id,获取公众号/小程序信息(MiniProgramInfo判断是小程序还是公众号)
https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info?component_access_token=%s post
POST数据示例:
{
"component_appid":"appid_value" ,
"authorizer_appid": "wxf8b4f85f3a794e77"
}
请求参数说明
参数 | 说明 |
---|---|
component_appid | 服务appid |
authorizer_appid | 授权方appid |
返回结果示例
{
"authorizer_info": {
"nick_name": "微信SDK Demo Special",
"head_img":"http://wx.qlogo.cn/mmopen/GPyw0pGicibl5EdaecNTict3n6EjJaC/0",
"service_type_info": { "id": 2 },
"verify_type_info": { "id": 0 },
"user_name":"gh_eb5e3a772040",
"alias":"paytest01",
"qrcode_url":"URL"
},
"authorization_info": {
"appid": "wxf8b4f85f3a794e77",
"func_info": [
{ "funcscope_category": { "id": 1 } },
{ "funcscope_category": { "id": 2 } },
{ "funcscope_category": { "id": 3 } }
]
}
}
9 微信开放平台帐号管理
第三方平台在获得此权限后,可以代替已授权的公众号/小程序创建开放平台帐号或进行绑定/解绑操作。
原文参考
https://www.cnblogs.com/xdao/p/wechat_openpartform.html