本文同步至我的CSDN部落格: https://blog.csdn.net/qq_43270074/article/details/108511883
一、前言
1、基于企業微信第三方應用開發API文檔,做了一個企業微信開發說明文檔,總結踩的坑以及對文檔的一個補充。
2、本文主要針對第三方應用開發,友善第三方服務商的雲應用上架企業微信應用市場
3、實作目标:服務商預先在第三方管理端注冊登記應用資訊。企業選擇使用第三方應用時,通過授權流程來一鍵安裝應用,我們将微信小程式放在企業微信應用市場
二、區分幾種token
作為第三方服務商的開發者,在開始開發之前,需要先了解各種接口憑證的差别,以更好的了解第三方的開放體系
1、應用授權的suite_access_token
企業在授權應用時,第三方需要以suite_id(第三方應用ID)、suite_secret(第三方應用密鑰)(擷取方法為:登入服務商管理背景->标準應用服務->應用管理欄,點進某個應用即可看到)換取suite_access_token,再以suite_access_token通路應用授權的接口
如何擷取:

1)擷取suite_id和suite_secret
在服務商管理背景(說明一下服務商管理背景即是第三方應用提供商進去的企業微信管理背景,不同于企業管理背景,對應用對很多配置都要在這裡配置)應用管理裡找到應用,可以擷取應用對suite_id和suite_secret,是第三方應用的唯一辨別。
2)擷取suite_ticket
suite_ticket由企業微信背景向登記的應用指令回調位址定期推送(10分鐘),用于加強調用者身份确認(即使suite_secret洩露,也無法擷取到suite_access_token)。
若丢失suite_ticket,除了等待定時推送的事件外,也可以在管理端(服務商管理背景)手動觸發推送。
手動觸發:
那麼如何擷取呢?
企業微信會每十分鐘定時回調我們配置的回調接口,會推送suite_ticket
回調接口收到資訊後,将suite_ticket放在redis緩存,并設定過期時間為十分鐘
//将suiteticket放入redis中, SuiteTicket十分鐘更新一次
redisTemplate.opsForValue().set(WX2_CP_SUITE_TICKET, suiteTicket, 10, TimeUnit.MINUTES);
至此就可以得到suite_access_token
2、服務商的provider_access_token
以corpid、provider_secret(擷取方法為:登入服務商管理背景->标準應用服務->通用開發參數,可以看到)換取provider_access_token,代表的是服務商的身份,而與應用無關。請求單點登入、注冊定制化等接口需要用到該憑證。該token在應用開發時基本沒什麼用
3、企業的access_token
為企業開放的所有接口,都必須以企業的corpid和永久授權碼來擷取access_token,然後調用通訊錄、應用、消息等接口服務于企業。接口,很重要的一個token
1)參數需要一個suite_access_token
在上面已經擷取到
2)auth_corpid
每個服務商同時也是一個企業微信的企業,都有唯一的corpid。擷取此資訊可在服務商管理背景“應用開發”-“通用開發參數”可檢視
3)permanent_code
永久授權碼是在當企業授權安裝我們第三方應用時,會回調我們自己當接口,這時企業微信會給一個auth_code參數,拿到這個code結合suite_access_token就可以擷取永久授權碼,需要儲存永久授權碼到自己的資料庫。
最後調用接口擷取access_token
注意接口需要到是哪一個token,建議将企業的access_token和應用授權的suite_access_token都緩存在redis中,設定過期時間為2小時
//儲存到redis中
redisTemplate.opsForValue().set(Constants.WX_CP_ACCESS_TOKEN_PREFIX + corpId + ":" + wx2CpThirdProperties.getSuiteId2(), accessToken, 120, TimeUnit.MINUTES);
三、回調說明
企業微信在有如下這些事件的時候,會觸發回調:
推送suite_ticket
授權成功通知
變更授權通知
取消授權通知
成員通知事件
部門通知事件
标簽通知事件
應用變更可見範圍
外部聯系人變更
1、配置回調接口
在服務商管理背景,應用詳情處的回調配置進行配置
2、回調本地測試
在測試階段,可以将回調位址寫成本地回調位址,需要用到内網穿透工具将本地服務配置為回調位址
工具:WeNAT
能夠将外部的請求轉發到本地,下載下傳後
https://www.wezoz.com,直接按照說明配置本地服務端口号就可以得到域名
3、注意
在本地測試回調的時候,有可能代碼沒走完就觸發下一次回調,會導緻token失效等問題,這個時候基本功能點保證的 前提下,可以通過輸出日志,上測試環境測試
四、總結
知道了最重要的token擷取和回調配置,就可以進行下一步的開發,下一章介紹,身份認證和外部聯系人管理。