獲取受權碼流程: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": "************" //刷新令牌 }