获取受权码流程:api
拿到component_verify_ticket -> 获取component_access_token -> 获取pre_auth_code -> 引导用户进入受权页 -> 用户赞成受权给第三方平台 -> 拿到受权码(auth_code) -> 获取authorizer_access_token(若过时,使用 authorizer_refresh_token 刷新) -> 根据authorizer_access_token调用公众号相关API
预受权码是第三方平台方实现受权托管的必备信息缓存
受权事件接受URL:用于接收取消受权通知、受权成功通知、受权更新通知,也用于接收ticket,ticket是验证平台方的重要凭据。服务器
微信服务器每十分钟向受权事件接收URL推送一次component_verify_ticket,用于获取第三方平台接口调用凭据微信
POST数听说明:app
<xml> <AppId> </AppId> //第三方平台AppID <CreateTime>1413192605 </CreateTime> //时间戳 <InfoType> </InfoType> //component_verify_ticket <ComponentVerifyTicket> </ComponentVerifyTicket> //Ticket内容 </xml>
第三方平台经过本身的component_appid(即在微信开放平台管理中心的第三方平台详情页中的AppID和AppSecret)和component_appsecret,以及component_verify_ticket来获取本身的接口调用凭证(component_access_token)url
接口调用请求说明:code
https://api.weixin.qq.com/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 //有效期 }
第三方平台经过本身的接口调用凭据(component_access_token)来获取用于受权流程准备的预受权码(pre_auth_code)component
接口调用请求说明:xml
https://api.weixin.qq.com/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分钟 }
受权页网址:token
https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx
参数说明:
用户进入第三方平台受权页后,须要确认并赞成将本身的公众号登陆受权给第三方平台方,完成受权流程。
受权流程完成后,受权页会自动跳转进入回调URI,并在URL参数中返回受权码和过时时间(redirect_url?auth_code=xxx&expires_in=600)
参数说明:
在获得受权码后,第三方平台方能够使用受权码(auth_code)换取受权公众号的接口调用凭据(authorizer_access_token,也简称为令牌),再经过该接口调用凭据,按照公众号开发者文档(mp.weixin.qq.com/wiki)的说明,去调用公众号相关API。
接口调用请求说明:
https://api.weixin.qq.com/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 } } ] }
返回值说明:
拿到受权码(authorizer_access_token)后,根据 authorizer_access_token 调用公众号相关API。
方令牌(authorizer_access_token)失效时,可用刷新令牌(authorizer_refresh_token)获取新的令牌。请注意,此处token是2小时刷新一次,开发者须要自行进行token的缓存,避免token的获取次数达到每日的限定额度。
接口调用请求说明:
https:// api.weixin.qq.com /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": "************" //刷新令牌 }