需求背景:
將一個(gè)A系統(tǒng)接入釘釘平臺(tái)任斋,供該企業(yè)內(nèi)部員工使用等,實(shí)現(xiàn)移動(dòng)化辦公悼泌。
主要需求:
- 可以使用釘釘通過掃描二維碼的方式登錄A系統(tǒng)
- 可以在A系統(tǒng)中共享釘釘?shù)慕M織架構(gòu)
技術(shù)調(diào)研思路:
第一階段:在釘釘官網(wǎng)查看開發(fā)者文檔
接入場(chǎng)景主要有四種:
- 企業(yè)內(nèi)部開發(fā) https://open-doc.dingtalk.com/microapp/bgb96b
- 第三方企業(yè)應(yīng)用 https://open-doc.dingtalk.com/microapp/isv
- 第三方個(gè)人應(yīng)用 https://open-doc.dingtalk.com/microapp/personnal
- 移動(dòng)應(yīng)用接入 https://open-doc.dingtalk.com/microapp/native
第二階段:選擇可行方案
根據(jù)需求砚偶,我們的使用場(chǎng)景為:僅供某個(gè)企業(yè)內(nèi)的成員使用,其他企業(yè)無法使用該應(yīng)用押蚤,所以優(yōu)先選擇企業(yè)內(nèi)部開發(fā)方案。
企業(yè)內(nèi)部開發(fā)
基于釘釘?shù)拈_放能力羹应,自主開發(fā)揽碘,供企業(yè)或組織內(nèi)部使用,以滿足辦公場(chǎng)景中的個(gè)性化需求园匹。該類應(yīng)用無需釘釘團(tuán)隊(duì)審核雳刺。
應(yīng)用類型
可以開發(fā)E應(yīng)用、微應(yīng)用兩種類型的應(yīng)用偎肃。
E應(yīng)用是一種全新的開發(fā)模式煞烫,讓移動(dòng)開發(fā)者通過簡(jiǎn)捷的前端語法寫出Native級(jí)別的性能體驗(yàn),并支持iOS累颂、安卓滞详、等多端部署。E應(yīng)用暫不支持PC端部署紊馏,如果您的應(yīng)用必須要在PC端上使用料饥,可暫時(shí)使用微應(yīng)用開發(fā)方式。
微應(yīng)用是指用H5方式開發(fā)的應(yīng)用朱监。
E應(yīng)用和微應(yīng)用的對(duì)比:
E應(yīng)用 | H5微應(yīng)用 | |
---|---|---|
加載性能 | 首次使用略慢岸啡,后續(xù)加載快 | 受到很多因素影響,優(yōu)化不夠好赫编,容易慢 |
使用體驗(yàn) | 非常順滑巡蘸,接近 Native | 容易卡頓 |
開發(fā)環(huán)境搭建 | 提供 IDE奋隶,快速創(chuàng)建項(xiàng)目 | 成本高 |
調(diào)試 | 提供 IDE,可以在電腦上調(diào)試大部分功能 | 在電腦上只能調(diào) UI悦荒,涉及到釘釘?shù)?jsapi唯欣,必須真機(jī)調(diào)試 |
使用開源 UI 組件 | 目前不支持 | 支持 |
使用 npm 包 | 支持 | 支持 |
模塊化組織代碼 | 支持 E應(yīng)用 特有的模塊化 | 使用 vue, React 等框架可以輕松獲得模塊化支持 |
灰度發(fā)布 | 釘釘提供 | 需要自己實(shí)現(xiàn) |
CDN | E應(yīng)用包默認(rèn)在 CDN | 需要開發(fā)者自己購買相關(guān)服務(wù) |
開發(fā)個(gè)人應(yīng)用 | 支持 | 不支持 |
應(yīng)用離線化 | 支持 | 不支持 |
由于E應(yīng)用主要針對(duì)手機(jī)平臺(tái),ios 和 android搬味,而且暫不支持在PC端使用境氢。E應(yīng)用比較坑人的地方是必須購買阿里云的服務(wù)器,而且基礎(chǔ)版的價(jià)格是2萬每年碰纬。(果斷放棄F剂摹)
比較并驗(yàn)證可行性之后,最終選擇實(shí)現(xiàn)方案:釘釘微應(yīng)用接入(企業(yè)內(nèi)部開發(fā))
實(shí)現(xiàn)步驟
創(chuàng)建應(yīng)用
- 企業(yè)管理員登錄釘釘管理后臺(tái)悦析,選擇導(dǎo)航【工作臺(tái)】寿桨,點(diǎn)擊【自建應(yīng)用】,開始創(chuàng)建自建應(yīng)用她按。
- 填寫基礎(chǔ)信息
填寫應(yīng)用基本信息牛隅。包括應(yīng)用名稱、logo和簡(jiǎn)介等酌泰。選擇企業(yè)內(nèi)部自主開發(fā)。 - 開發(fā)模式選擇“開發(fā)應(yīng)用”匕累,應(yīng)用類型選擇“微應(yīng)用”陵刹。
- 創(chuàng)建成功過后,會(huì)生成appKey和appSecret欢嘿,可獲取access_token進(jìn)行開發(fā)
開發(fā)應(yīng)用
釘釘開放平臺(tái)提供豐富的API接口衰琐,以便開發(fā)者接入。
釘釘開放平臺(tái)提供了企業(yè)通訊錄管理炼蹦、文件管理羡宙、發(fā)送企業(yè)會(huì)話消息等功能,接口使用可以參考服務(wù)端開發(fā)文檔掐隐。https://open-doc.dingtalk.com/microapp/serverapi2/gh60vz
釘釘開放平臺(tái)提供了微應(yīng)用在釘釘客戶端運(yùn)行的專用容器狗热,并提供一組可以調(diào)用釘釘?shù)谋镜啬芰蜆I(yè)務(wù)能力的JSAPI接口,JSAPI接口用于微應(yīng)用與釘釘功能之間的結(jié)合虑省,接口使用可以參考客戶端開發(fā)文檔匿刮。https://open-doc.dingtalk.com/microapp/dev/welcome-to-lark
掃碼登錄第三方網(wǎng)站
使用釘釘客戶端掃碼并確認(rèn)登錄您的web系統(tǒng),在您的系統(tǒng)內(nèi)獲得正在訪問用戶的釘釘身份探颈,而用戶無需輸入賬戶密碼熟丸。
注: 此功能與企業(yè)自建應(yīng)用/第三方企業(yè)應(yīng)用無關(guān),只能用掃碼登錄打開第三方網(wǎng)站伪节,并且不是釘釘內(nèi)的應(yīng)用免登光羞,此流程只能做到獲取到用戶身份(無手機(jī)號(hào)和企業(yè)相關(guān)信息)绩鸣。
獲取appId及appSecret
點(diǎn)擊進(jìn)入釘釘開發(fā)者平臺(tái) 的頁面,點(diǎn)擊左側(cè)菜單的【移動(dòng)接入應(yīng)用】纱兑,然后點(diǎn)擊右上角的【創(chuàng)建掃碼登錄應(yīng)用授權(quán)】全闷,創(chuàng)建用于免登過程中驗(yàn)證身份的appId及appSecret,創(chuàng)建后即可看到appId和appSecret萍启。
構(gòu)造掃碼登錄頁面
- 第一種方式是直接使用釘釘提供的掃碼登錄頁面
在企業(yè)Web系統(tǒng)里总珠,用戶點(diǎn)擊使用釘釘掃描登錄,第三方Web系統(tǒng)跳轉(zhuǎn)到如下地址:
https://oapi.dingtalk.com/connect/qrconnect?appid=APPID&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=REDIRECT_URI
url里的參數(shù)需要換成第三方Web系統(tǒng)對(duì)應(yīng)的參數(shù)勘纯。在釘釘用戶掃碼登錄并確認(rèn)后局服,會(huì)302到你指定的redirect_uri,并向url參數(shù)中追加臨時(shí)授權(quán)碼code及state兩個(gè)參數(shù)驳遵。
- 第二種方式是支持網(wǎng)站將釘釘?shù)卿浂S碼內(nèi)嵌到自己頁面中
用戶使用釘釘掃碼登錄后JS會(huì)將loginTmpCode返回給網(wǎng)站淫奔。JS釘釘?shù)卿浿饕猛荆壕W(wǎng)站希望用戶在網(wǎng)站內(nèi)就能完成登錄,無需跳轉(zhuǎn)到釘釘域下登錄后再返回堤结,提升釘釘?shù)卿浀牧鲿承耘c成功率唆迁。
https://open-doc.dingtalk.com/microapp/serverapi2/kymkv6#a-namegpdvgqa%E7%AC%AC%E4%BA%8C%E7%A7%8D%E6%96%B9%E5%BC%8F%E6%98%AF%E6%94%AF%E6%8C%81%E7%BD%91%E7%AB%99%E5%B0%86%E9%92%89%E9%92%89%E7%99%BB%E5%BD%95%E4%BA%8C%E7%BB%B4%E7%A0%81%E5%86%85%E5%B5%8C%E5%88%B0%E8%87%AA%E5%B7%B1%E9%A1%B5%E9%9D%A2%E4%B8%AD
同步組織架構(gòu)
調(diào)用釘釘提供的相關(guān)接口
用戶管理:https://open-doc.dingtalk.com/microapp/serverapi2/ege851
部門管理:https://open-doc.dingtalk.com/microapp/serverapi2/dubakq
角色管理:https://open-doc.dingtalk.com/microapp/serverapi2/dnu5l1
相關(guān)文檔
企業(yè)內(nèi)部開發(fā)常見問題:https://open-doc.dingtalk.com/microapp/bgb96b/mdg058
開發(fā)企業(yè)內(nèi)部應(yīng)用:https://open-doc.dingtalk.com/microapp/bgb96b/gt5d6a
釘釘微應(yīng)用接入(企業(yè)內(nèi)部開發(fā)):https://blog.csdn.net/Jason847/article/details/75007140/
掃碼登錄第三方網(wǎng)站:https://open-doc.dingtalk.com/microapp/serverapi2/kymkv6
JavaWeb開發(fā)
初步實(shí)現(xiàn)網(wǎng)站應(yīng)用釘釘掃碼登錄:https://blog.csdn.net/baofeidyz/article/details/59059379
第三方網(wǎng)站通過 釘釘 掃描二維碼登錄/免密碼登錄,獲取手機(jī)號(hào)碼竞穷、郵箱等信息:http://www.reibang.com/p/6a61043c79c9