微信開放平台-第三方平台授權流程及接口概述


近期需要使用第三方平台做相應的代小程序業務的開發,本篇主要針對微信開放平台的第三方平台授權流程做簡要總結。我們可以簡單理解為代管小程序或公眾號沒有開發資源,需要將自己的小程序托管給第三方公司現實業務功能,微信開放平台針對這種場景開放了第三方開發能力,本篇要講的授權也就是托管給第三方公司的第一步,授管后小程序的服務器配置、域名配置等都將修改為第三方公司提供的服務配置,如此第三方公司利用微信開發平台能力完成代管小程序需求業務功能,詳細說明見官方文檔

小程序運營者通過授權后,第三方平台就可以代小程序完成相應的開發任務實現業務需求,我在另一篇“第三方平台代小程序實現業務”中介紹了在授權后,第三方平台如何使用微信開放平台的能力完成相關業務的開發步驟。

 

授權流程說明

作為第三方開發平台,在為其他微信公眾號或小程序開發、調用其接口之前,需要先得到代管小程序屬主的授權,授權方式分為二維碼和跳轉鏈接二種。

 

1.接收驗證票據(component_verify_ticket)

出於安全考慮,在第三方平台創建審核通過后,微信服務器會每隔 10 分鍾會向第三方的消息接收地址推送一次 component_verify_ticket,用於獲取第三方平台接口調用憑據。

第三方的程序被動接收,建議每次都將新值放入Redis中,供其他請求獲取值(獲取令牌時使用)。

接口文檔:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/component_verify_ticket.html

推送內容解密后的示例:

1 <xml>
2 <AppId>some_appid</AppId>
3 <CreateTime>1413192605</CreateTime>
4 <InfoType>component_verify_ticket</InfoType>
5 <ComponentVerifyTicket>some_verify_ticket</ComponentVerifyTicket>
6 </xml>

 

 

2.獲取令牌(component_access_token)

第三方平台通過component_appid和 component_appsecret,以及 component_verify_ticket(每 10 分鍾推送一次的安全 ticket)來獲取自己的接口調用憑據(component_access_token)

(微信開放平台管理中心的第三方平台詳情頁中可以查看的 AppID 和 AppSecret)。 

在需要授權時,第三方平台程序主動發送POST請求獲取,單個令牌有效期為2個小時(7200s),在令牌快過期時(比如1小時50分),重新調用接口獲取,可以將其存儲在Redis中。

接口文檔:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/component_access_token.html

POST數據示例

{
  "component_appid":  "appid_value" ,
  "component_appsecret":  "appsecret_value",
  "component_verify_ticket": "ticket_value"
}

返回數據示例

{
  "component_access_token": "61W3mEpU66027wgNZ_MhGHNQDHnFATkDa9-2llqrMBjUwxRSNPbVsMmyD-yq8wZETSoE5NQgecigDrSHkPtIYA",
  "expires_in": 7200
}

 

3.獲取預授權碼(pre_auth_code)

通過第二步獲取的接口調用憑據(component_access_token)來獲取用於授權流程准備的預授權碼(pre_auth_code)。

每個預授權碼有效期為10分鍾(600s)需將其存儲在Redis中,生成授權頁會使用。

接口文檔:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/pre_auth_code.html

請求參數說明

參數 類型 必填 說明
component_access_token string 第三方平台component_access_token,不是authorizer_access_token
component_appid string 第三方平台 appid

返回數據示例:

{
  "pre_auth_code": "Cx_Dk6qiBE0Dmx4EmlT3oRfArPvwSQ-oa3NL_fwHM7VI08r52wazoZX2Rhpz1dEw",
  "expires_in": 600
}

 

 

4.引入用戶進入授權頁

第三方平台方可以在自己的網站中放置“微信公眾號授權”或者“小程序授權”的入口,或生成授權鏈接放置在移動網頁中,引導公眾號和小程序管理員進入授權頁。

用戶進入第三方平台授權頁后,需要確認並同意將自己的公眾號或小程序授權給第三方平台方,完成授權流程,授權方式分為以下兩種,詳細介紹

方式一:授權注冊頁面掃碼授權

授權頁網址為:

https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx&auth_type=xxx。

 

方式二:點擊移動端鏈接快速授權 第三方平台方可以生成授權鏈接,將鏈接通過移動端直接發給授權管理員,管理員確認后即授權成功。

授權鏈接地址:

https://mp.weixin.qq.com/safe/bindcomponent?action=bindcomponent&auth_type=3&no_scan=1&component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx&auth_type=xxx&biz_appid=xxxx#wechat_redirect

 

5.獲取授權碼(pre_auth_code

當用戶在第三方平台授權頁中完成授權流程后,第三方平台開發者可以在回調 URI 中通過 URL 參數獲取授權碼。

回調URI中會接收授權碼信息和過期時間(redirect_url?auth_code=xxx&expires_in=600)(獲取接口調用憑據時使用)

 

6.獲取接口調用憑據(authorizer_access_token)

通過授權碼和自已接口的調用憑據(component_access_token)換取公眾號或小程序的接口調用憑據(authorizer_access_token 和用於前者快過期時用來刷新它的 authorizer_refresh_token)和授權信息(授權了哪些權限等信息)建議保存授權信息中的刷新令牌(authorizer_refresh_token)。

接口文檔:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/authorization_info.html

 

7.獲取/刷新授權公眾號或小程序的接口調用憑據

authorizer_refresh_token刷新令牌(在授權的公眾號具備API權限時,才有此返回值),刷新令牌主要用於第三方平台獲取和刷新已授權用戶的 authorizer_access_token。

一旦丟失,只能讓用戶重新授權,才能再次拿到新的刷新令牌。用戶重新授權后,之前的刷新令牌會失效,所以建議來刷新公眾號或小程序的接口調用憑據。

接口文檔:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/api_authorizer_token.html

 

8、第三方平台接口使用

通過以上授權流程,獲取到微信小程序的接口調用憑據authorizer_access_token后即可完成相應的業務開發了。

如小程序基本信息接口,以下可以獲取小程序的基本信息:

 GET https://api.weixin.qq.com/cgi-bin/account/getaccountbasicinfo?access_token=ACCESS_TOKEN

 接口文檔:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Mini_Programs/Mini_Program_Information_Settings.html

 

詳細授權流程說明:

https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Authorization_Process_Technical_Description.html

相關接口文檔說明:

https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/api/pre_auth_code.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM