代公衆號調用接口

代公衆號調用接口

概述

公衆號在登錄授權給第三方平臺後,許多公衆號業務的實現,需要依靠調用接口來實現。本頁介紹了公衆號第三方平臺開發者在授權流程中需要用到的API,以及獲得公衆號的授權後,如何代替公衆號調用接口。另外,微信服務器會將粉絲髮給公衆號的消息,以及微信服務器發給公衆號的事件推送(如粉絲取消關注通知),發給開發者服務器(會發送到公衆號消息與事件接收URL,詳見申請資料說明頁)上,開發者需要對這些消息在5秒內進行處理(如粉絲取消關注通知需要開發者返回success,詳見http://mp.weixin.qq.com/wiki/14/89b871b5466b19b3efa4ada8e577d45e.html)。

1、代替授權公衆號調用接口

第三方平臺方在獲得公衆號授權後,可以使用authorizer_access_token(即授權公衆號的令牌)作爲憑證,代替公衆號調用API,調用方式和公衆號使用自身API的方式一樣(只是需將調用API時提供的公衆號自身access_token參數,替換爲authorizer_access_token),具體詳見 http://mp.weixin.qq.com/wiki

2、各類型公衆號的接口權限說明

各類型的公衆號具體擁有哪些API權限(每個授權的公衆號,都可以通過下文將提到的接口獲知公衆號類型),請詳見:http://mp.weixin.qq.com/wiki/7/2d301d4b757dedc333b9a9854b457b47.html

3、代替公衆號使用微信JS-SDK

微信JS-SDK的使用方法,請參閱“接口說明”-“代公衆號使用JS SDK說明”。

4、報警排查指引

在授權公衆號以及第三方平臺的開發和業務運營過程中遇到報警時,請參閱報警排查指引來解決問題:http://mp.weixin.qq.com/wiki/6/01405db0092f76bb96b12a9f954cd866.html

具體第三方平臺API列表(不包括公衆號自身已有的、第三方平臺可代替公衆號調用的接口)如下:

功能 API名稱
1、獲取第三方平臺access_token api_component_token
2、獲取預授權碼 api_create_preauthcode
3、使用授權碼換取公衆號的授權信息 api_query_auth
4、獲取(刷新)授權公衆號的令牌 api_authorizer_token
5、獲取授權方信息 api_get_authorizer_info
6、獲取授權方的選項設置信息 api_get_authorizer_option
7、設置授權方的選項信息 api_set_authorizer_option
8、推送component_verify_ticket協議 每隔10分鐘定時推送
9、推送取消授權通知 公衆號取消授權時推送給開發者

特別注意,所有API調用需要驗證調用者IP地址。只有在第三方平臺申請時填寫的白名單IP地址列表內的IP地址,才能合法調用,其他一律拒絕。

1、獲取第三方平臺access_token

由於第三方平臺方可能託管了大量的公衆號,第三方平臺方安全問題造成的影響會更加嚴重,故API中增加了2項安全策略。

  1. A)所有API調用端只能是第三方平臺申請時填寫的白名單客戶端IP

  2. B)獲取第三方平臺令牌(component_access_token),增加了component_verify_ticket參數。component_verify_ticket由公衆平臺每隔10分鐘,持續推送給第三方平臺方(在創建公衆號第三方平臺審覈通過後,纔會開始推送)。

該API用於獲取第三方平臺令牌(component_access_token)

接口調用請求說明

http請求方式: POST(請使用https協議) 
https://api.weixin.qq.com/cgi-bin/component/api_component_token

POST數據示例:

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

請求參數說明
參數 說明
component_appid 第三方平臺appid
component_appsecret 第三方平臺appsecret
component_verify_ticket 微信後臺推送的ticket,此ticket會定時推送,具體請見本頁末尾的推送說明
返回結果示例

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

結果參數說明
參數 說明
component_access_token 第三方平臺access_token
expires_in 有效期


2、獲取預授權碼

該API用於獲取預授權碼。預授權碼用於公衆號授權時的第三方平臺方安全驗證。

接口調用請求說明

http請求方式: POST(請使用https協議)

https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=xxx

POST數據示例:

{
"component_appid":"appid_value" 
}
   

請求參數說明
參數 說明
component_appid 第三方平臺方appid
返回結果示例

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

結果參數說明
參數 說明
pre_auth_code 預授權碼
expires_in 有效期,爲20分鐘


3、使用授權碼換取公衆號的授權信息

該API用於使用授權碼換取授權公衆號的授權信息,並換取authorizer_access_token和authorizer_refresh_token。 授權碼的獲取,需要在用戶在第三方平臺授權頁中完成授權流程後,在回調URI中通過URL參數提供給第三方平臺方。

接口調用請求說明

http請求方式: POST(請使用https協議)

https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=xxxx

POST數據示例:

{
"component_appid":"appid_value" ,
" authorization_code": "auth_code_value"
}
   

請求參數說明
參數 說明
component_appid 第三方平臺appid
authorization_code 授權code,會在授權成功時返回給第三方平臺,詳見第三方平臺授權流程說明
返回結果示例


"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
}
}, 
{
"funcscope_category": {
"id": 2
}
}, 
{
"funcscope_category": {
"id": 3
}
}
]
}
   

結果參數說明
參數 說明
authorization_info 授權信息
authorizer_appid 授權方appid
authorizer_access_token 授權方令牌(在授權的公衆號具備API權限時,纔有此返回值)
expires_in 有效期(在授權的公衆號具備API權限時,纔有此返回值)
authorizer_refresh_token 刷新令牌(在授權的公衆號具備API權限時,纔有此返回值),刷新令牌主要用於公衆號第三方平臺獲取和刷新已授權用戶的access_token,只會在授權時刻提供,請妥善保存。 一旦丟失,只能讓用戶重新授權,才能再次拿到新的刷新令牌
func_info 公衆號授權給開發者的權限集列表(請注意,當出現用戶已經將消息與菜單權限集授權給了某個第三方,再授權給另一個第三方時,由於該權限集是互斥的,後一個第三方的授權將去除此權限集,開發者可以在返回的func_info信息中驗證這一點,避免信息遺漏),1到8分別代表:
消息與菜單權限集
用戶管理權限集
帳號管理權限集
網頁授權權限集
微信小店權限集
多客服權限集
業務通知權限集
微信卡券權限集
           


4、獲取(刷新)授權公衆號的令牌

該API用於在授權方令牌(authorizer_access_token)失效時,可用刷新令牌(authorizer_refresh_token)獲取新的令牌。

接口調用請求說明

http請求方式: POST(請使用https協議)
https:// api.weixin.qq.com /cgi-bin/component/api_authorizer_token?component_access_token=xxxxx

POST數據示例:

{
"component_appid":"appid_value",
"authorizer_appid":"auth_appid_value",
"authorizer_refresh_token":"refresh_token_value",
}
   

請求參數說明
參數 說明
component_appid 第三方平臺appid
authorizer_appid 授權方appid
authorizer_refresh_token 授權方的刷新令牌,刷新令牌主要用於公衆號第三方平臺獲取和刷新已授權用戶的access_token,只會在授權時刻提供,請妥善保存。 一旦丟失,只能讓用戶重新授權,才能再次拿到新的刷新令牌
返回結果示例

{
"authorizer_access_token": "aaUl5s6kAByLwgV0BhXNuIFFUqfrR8vTATsoSHukcIGqJgrc4KmMJ-JlKoC_-NKCLBvuU1cWPv4vDcLN8Z0pn5I45mpATruU0b51hzeT1f8", 
"expires_in": 7200, 
"authorizer_refresh_token": "BstnRqgTJBXb9N2aJq6L5hzfJwP406tpfahQeLNxX0w"
}
   

結果參數說明
參數 說明
authorizer_access_token 授權方令牌
expires_in 有效期,爲2小時
authorizer_refresh_token 刷新令牌


5、獲取授權方的賬戶信息

該API用於獲取授權方的公衆號基本信息,包括頭像、暱稱、帳號類型、認證類型、微信號、原始ID和二維碼圖片URL。

需要特別記錄授權方的帳號類型,在消息及事件推送時,對於不具備客服接口的公衆號,需要在5秒內立即響應;而若有客服接口,則可以選擇暫時不響應,而選擇後續通過客服接口來發送消息觸達粉絲。

接口調用請求說明

http請求方式: POST(請使用https協議)
https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info?component_access_token=xxxx

POST數據示例:

{
"component_appid":"appid_value" ,
"authorizer_appid": "auth_appid_value" 
}
   

請求參數說明
參數 說明
component_appid 服務appid
authorizer_appid 授權方appid
返回結果示例


   

{
"authorizer_info": {
"nick_name": "微信SDK Demo Special", 
"head_img": "http://wx.qlogo.cn/mmopen/GPyw0pGicibl5Eda4GmSSbTguhjg9LZjumHmVjybjiaQXnE9XrXEts6ny9Uv4Fk6hOScWRDibq1fI0WOkSaAjaecNTict3n6EjJaC/0", 
"service_type_info": { "id": 2 }, 
"verify_type_info": { "id": 0 },
"user_name":"gh_eb5e3a772040",
"alias":"paytest01"
}, 

"qrcode_url":"URL",    

"authorization_info": {

"appid": "wxf8b4f85f3a794e77", 
"func_info": [
{ "funcscope_category": { "id": 1 } }, 
{ "funcscope_category": { "id": 2 } }, 
{ "funcscope_category": { "id": 3 } }
]
}
}

   
結果參數說明
參數 說明
authorizer_info 授權方暱稱
head_img 授權方頭像
service_type_info 授權方公衆號類型,0代表訂閱號,1代表由歷史老帳號升級後的訂閱號,2代表服務號
verify_type_info 授權方認證類型,-1代表未認證,0代表微信認證,1代表新浪微博認證,2代表騰訊微博認證,3代表已資質認證通過但還未通過名稱認證,4代表已資質認證通過、還未通過名稱認證,但通過了新浪微博認證,5代表已資質認證通過、還未通過名稱認證,但通過了騰訊微博認證
user_name 授權方公衆號的原始ID
alias 授權方公衆號所設置的微信號,可能爲空
qrcode_url 二維碼圖片的URL,開發者最好自行也進行保存
authorization_info 授權信息
appid 授權方appid
func_info 公衆號授權給開發者的權限集列表(請注意,當出現用戶已經將消息與菜單權限集授權給了某個第三方,再授權給另一個第三方時,由於該權限集是互斥的,後一個第三方的授權將去除此權限集,開發者可以在返回的func_info信息中驗證這一點,避免信息遺漏),1到9分別代表:
消息與菜單權限集
用戶管理權限集
帳號管理權限集
網頁授權權限集
微信小店權限集
多客服權限集
業務通知權限集
微信卡券權限集
微信掃一掃權限集
           


6、獲取授權方的選項設置信息

該API用於獲取授權方的公衆號的選項設置信息,如:地理位置上報,語音識別開關,多客服開關。注意,獲取各項選項設置信息,需要有授權方的授權,詳見權限集說明。

接口調用請求說明

http請求方式: POST(請使用https協議)https://api.weixin.qq.com/cgi-bin/component/ api_get_authorizer_option?component_access_token=xxxx

POST數據示例

{
"component_appid":"appid_value",
"authorizer_appid": " auth_appid_value ",
"option_name": "option_name_value"
}
   

請求參數說明
參數 說明
component_appid 第三方平臺appid
authorizer_appid 授權公衆號appid
option_name 選項名稱
返回結果示例

{
"authorizer_appid":"wx7bc5ba58cabd00f4",
"option_name":"voice_recognize",
"option_value":"1"
}
   

結果參數說明
參數 說明
authorizer_appid 授權公衆號appid
option_name 選項名稱
option_value 選項值


7、設置授權方的選項信息

該API用於設置授權方的公衆號的選項信息,如:地理位置上報,語音識別開關,多客服開關。注意,設置各項選項設置信息,需要有授權方的授權,詳見權限集說明。

接口調用請求說明

http請求方式: POST(請使用https協議)https://api.weixin.qq.com/cgi-bin/component/ api_set_authorizer_option?component_access_token=xxxx

POST數據示例

{
"component_appid":"appid_value",
"authorizer_appid": " auth_appid_value ",
"option_name": "option_name_value",
"option_value":"option_value_value"
}
   

請求參數說明
參數 說明
component_appid 第三方平臺appid
authorizer_appid 授權公衆號appid
option_name 選項名稱
option_value 設置的選項值
返回結果示例

{
"errcode":0,
"errmsg":"ok"
}
   

結果參數說明
參數 說明
errcode 錯誤碼
errmsg 錯誤信息
選項名和選項值表
option_name option_value 選項值說明
location_report(地理位置上報選項) 0 無上報
1 進入會話時上報
2 每5s上報
voice_recognize(語音識別開關選項) 0 關閉語音識別
1 開啓語音識別
customer_service(客服開關選項) 0 關閉多客服
1 開啓多客服


8、推送component_verify_ticket協議

在公衆號第三方平臺創建審覈通過後,微信服務器會向其“授權事件接收URL”每隔10分鐘定時推送component_verify_ticket。第三方平臺方在收到ticket推送後也需進行解密(詳細請見【消息加解密接入指引】),接收到後必須直接返回字符串success。

POST數據示例

<xml>
<AppId> </AppId>
<CreateTime>1413192605 </CreateTime>
<InfoType> </InfoType>
<ComponentVerifyTicket> </ComponentVerifyTicket>
</xml>
     

字段說明
字段名稱 字段描述
Appid 第三方平臺appid
CreateTime 時間戳
InfoType component_verify_ticket
ComponentVerifyTicket Ticket內容


9、推送取消授權通知

當授權方(即授權公衆號)在公衆平臺的授權管理中,取消了對第三方平臺方的授權託管後,微信服務器會向第三方平臺方的授權事件接收URL(創建第三方平臺時填寫)推送取消授權通知。

POST數據示例

<xml>
<AppId></AppId>
<CreateTime>1413192760</CreateTime>
<InfoType> </InfoType>
<AuthorizerAppid></AuthorizerAppid>
</xml>
   

第三方平臺方在收到取消授權通知後也需進行解密(詳細請見【消息加解密接入指引】),接收到後之後只需直接返回字符串success。爲了加強安全性,postdata中的xml將使用服務申請時的加解密key來進行加密,具體請見【公衆號第三方平臺的加密解密技術方案】

字段說明:

字段名稱 _(字段描述)
InfoType none,代表該消息推送給服務
Appid 第三方平臺appid
CreateTime 時間戳
InfoType unauthorized
AuthorizerAppid 取消授權的公衆號
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章