失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微信公众号第三方平台授权流程

微信公众号第三方平台授权流程

时间:2020-07-23 02:17:40

相关推荐

微信公众号第三方平台授权流程

独角兽企业重金招聘Python工程师标准>>>

微信公众号第三方平台授权流程

获取授权码流程:

拿到component_verify_ticket -> 获取component_access_token -> 获取pre_auth_code -> 引导用户进入授权页 -> 用户同意授权给第三方平台 -> 拿到授权码(auth_code)-> 获取authorizer_access_token(若过期,使用 authorizer_refresh_token 刷新)-> 根据authorizer_access_token调用公众号相关API

1. 第三方平台方获取预授权码(pre_auth_code)

预授权码是第三方平台方实现授权托管的必备信息

1.1. 推送component_verify_ticket

授权事件接受URL:用于接收取消授权通知、授权成功通知、授权更新通知,也用于接收ticket,ticket是验证平台方的重要凭据。

微信服务器每十分钟向授权事件接收URL推送一次component_verify_ticket,用于获取第三方平台接口调用凭据

POST数据说明:

<xml><AppId> </AppId> //第三方平台AppID<CreateTime>1413192605 </CreateTime> //时间戳<InfoType> </InfoType> //component_verify_ticket<ComponentVerifyTicket> </ComponentVerifyTicket> //Ticket内容</xml>

1.2. 获取第三方平台component_access_token

第三方平台通过自己的component_appid(即在微信开放平台管理中心的第三方平台详情页中的AppID和AppSecret)和component_appsecret,以及component_verify_ticket来获取自己的接口调用凭证(component_access_token)

接口调用请求说明:

Http请求方式: POST请求接口:https://api./cgi-bin/component/api_component_token

POST请求数据示例:{"component_appid":"appid_value", //第三方平台appid"component_appsecret": "appsecret_value", //第三方平台appsecret"component_verify_ticket": "ticket_value" //微信后台推送的ticket}返回结果示例:{"component_access_token": "61W3mEpU66027wgNZ_MhGHNQDHnFATkDa9-2llqrMBjUwxRSNPbVsMmyD-yq8wZETSoE5NQgecigDrSHkPtIYA", //第三方平台component_access_token"expires_in": 7200 //有效期}

1.3. 获取预授权码pre_auth_code

第三方平台通过自己的接口调用凭据(component_access_token)来获取用于授权流程准备的预授权码(pre_auth_code)

接口调用请求说明:

Http请求方式: POST请求接口:https://api./cgi-bin/component/api_create_preauthcode?component_access_token=xxx

POST数据示例:{"component_appid":"appid_value" //第三方平台方appid}返回结果示例{"pre_auth_code": "Cx_Dk6qiBE0Dmx4EmlT3oRfArPvwSQ-oa3NL_fwHM7VI08r52wazoZX2Rhpz1dEw", //预授权码"expires_in": 600 //有效期,为20分钟}

2. 获取授权码

2.1. 引导用户进入授权页

授权页网址:

https://mp./cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx

参数说明:

component_appid: 第三方平台方appidpre_auth_code: 第一步获取的预授权码redirect_uri: 回调url

2.2. 用户确认并同意登录授权给第三方平台方

用户进入第三方平台授权页后,需要确认并同意将自己的公众号登录授权给第三方平台方,完成授权流程。

2.3. 授权后回调URI,得到授权码(authorization_code)和过期时间

授权流程完成后,授权页会自动跳转进入回调URI,并在URL参数中返回授权码和过期时间(redirect_url?auth_code=xxx&expires_in=600)

参数说明:

auth_code: 授权码expires_in: 过期时间

3. 利用授权码调用用户公众号的相关API

在得到授权码后,第三方平台方可以使用授权码(auth_code)换取授权公众号的接口调用凭据(authorizer_access_token,也简称为令牌),再通过该接口调用凭据,按照公众号开发者文档(mp./wiki)的说明,去调用公众号相关API。

先根据授权码(auth_code)换取公众号的接口调用凭据(authorizer_access_token)

接口调用请求说明:

Http请求方式: POST(请使用https协议)请求接口:https://api./cgi-bin/component/api_query_auth?component_access_token=xxxx

POST数据示例:{"component_appid": "appid_value", //第三方平台appid"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}}]}

返回值说明:

authorization_info: 授权信息authorizer_appid: 授权方appidauthorizer_access_token: 授权方接口调用凭据(在授权的公众号具备API权限时,才有此返回值),也简称为令牌expires_in: 有效期(在授权的公众号具备API权限时,才有此返回值)authorizer_refresh_token: 接口调用凭据刷新令牌(在授权的公众号具备API权限时,才有此返回值),刷新令牌主要用于公众号第三方平台获取和刷新已授权用户的access_token,只会在授权时刻提供,请妥善保存。 一旦丢失,只能让用户重新授权,才能再次拿到新的刷新令牌func_info: 公众号授权给开发者的权限集列表,详情查看:权限集列表

拿到授权码(authorizer_access_token)后,根据 authorizer_access_token 调用公众号相关API。

获取(刷新)授权公众号的接口调用凭据(令牌)

方令牌(authorizer_access_token)失效时,可用刷新令牌(authorizer_refresh_token)获取新的令牌。请注意,此处token是2小时刷新一次,开发者需要自行进行token的缓存,避免token的获取次数达到每日的限定额度。

接口调用请求说明:

http请求方式: POST(请使用https协议)请求接口:https:// api. /cgi-bin/component/api_authorizer_token?component_access_token=xxxxx

POST数据示例:{"component_appid": "appid_value", //第三方平台appid"authorizer_appid": "auth_appid_value", //授权方appid"authorizer_refresh_token": "refresh_token_value"}authorizer_refresh_token: 授权方的刷新令牌,刷新令牌主要用于公众号第三方平台获取和刷新已授权用户的access_token,只会在授权时刻提供,请妥善保存。一旦丢失,只能让用户重新授权,才能再次拿到新的刷新令牌返回结果示例: {"authorizer_access_token": "aaUl5s6kAByLwgV0BhXNuIFFUqfrR8vTATsoSHukcIGqJgrc4KmMJ-JlKoC_-NKCLBvuU1cWPv4vDcLN8Z0pn5I45mpATruU0b51hzeT1f8", //授权方令牌"expires_in": 7200, //有效期,为2小时"authorizer_refresh_token": "************" //刷新令牌}

如果觉得《微信公众号第三方平台授权流程》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。