最近在搞微信開(kāi)放平臺(tái),記錄一下微信開(kāi)放平臺(tái)第三方授權(quán)的流程。
后端:Delphi10.3.3(DelphiWebMvc)
前端:jQuery (Ajax + HTML)
緩存:Redis服務(wù)器
授權(quán)流程:
第三方平臺(tái)開(kāi)發(fā)者可以通過(guò)調(diào)用微信開(kāi)放平臺(tái)的接口能力,為公眾號(hào)或小程序的運(yùn)營(yíng)者提供賬號(hào)申請(qǐng)、小程序創(chuàng)建、技術(shù)開(kāi)發(fā)、行業(yè)方案、活動(dòng)營(yíng)銷、插件能力等全方位服務(wù)。同一個(gè)賬號(hào)的運(yùn)營(yíng)者可以選擇多家適合自己的第三方為其提供產(chǎn)品能力或委托運(yùn)營(yíng)。(官方抄的)
1.獲取驗(yàn)證票據(jù)(component_verify_ticket)
存儲(chǔ)在Redis,供其他請(qǐng)求取值。(獲取令牌時(shí)使用)。
程序被動(dòng)接收,每10分鐘(600s)被推送一次(component_verify_ticket),每次都將新值存入Redis。
2.獲取令牌(component_access_token)
存儲(chǔ)在Redis中,供其他請(qǐng)求取值。(獲取預(yù)授權(quán)碼時(shí)使用)
需要后端程序主動(dòng)發(fā)送POST請(qǐng)求,單個(gè)令牌有效期為2個(gè)小時(shí)(7200s),在令牌快過(guò)期時(shí)(比如1小時(shí)50分),重新調(diào)用接口獲取。
3.獲取預(yù)授權(quán)碼(pre_auth_code)
將其存儲(chǔ)在Redis中,供其他請(qǐng)求取值。(生成授權(quán)頁(yè)使用)
后端程序主動(dòng)發(fā)送POST請(qǐng)求,每個(gè)預(yù)授權(quán)碼有效期為10分鐘(600s)
4.生成授權(quán)頁(yè),寫(xiě)個(gè)Html
第三方平臺(tái)根據(jù)之前獲取到的參數(shù),按照官方文檔生成被授權(quán)頁(yè)。
用戶打開(kāi)第三方平臺(tái)授權(quán)頁(yè)后,掃描二維碼,確認(rèn)并同意將自己的公眾號(hào)或小程序授權(quán)給第三方平臺(tái)方,完成授權(quán)。
5.獲取授權(quán)碼(auth_code)
授權(quán)后,回調(diào)URI,后端會(huì)接收授權(quán)碼信息和過(guò)期時(shí)間(redirect_url?auth_code=xxx&expires_in=600)(獲取接口調(diào)用憑據(jù)時(shí)使用)
6.獲取接口調(diào)用憑據(jù)(authorizer_access_token)
將其存儲(chǔ)在Redis中,通過(guò)authorizer_access_token,去調(diào)用公眾號(hào)或小程序相關(guān) API。
每個(gè)接口調(diào)用令牌有效期為2小時(shí)(7200s),每天有調(diào)用限制