最近做了個釘釘企業內部微應用的專案。記錄下自己的心得。
首先根據官方文件明白免登流程
}在登入前,首先要在前端引入釘釘的js檔案,以前釘釘的js是要分pc端與移動端的,引入的js也不一樣,pc端為字首為dingtalkpc,移動端字首為dd。但是釘釘前不久有重新更新了開發文件,將兩種js合併在了一起,通過傳入type引數區分裝置,如下圖**所示。
dd.config(", //js的位址我就不寫了,開發文件中有。上面的**在釘釘開發文件中稱之為鑑權。在釘釘的api中有部分api必須是要先進行鑑權才能呼叫的,而有部分則不需要。為什麼要說這個呢。因為有兩種免登的方式,一種比較簡單,一種比較複雜。相信你也猜到了,簡單的不需要鑑權,而複雜的需要鑑權。這兩種方式也互有利弊。必填,微應用id
corpid: "",//
必填,企業id
timestamp: "", //
必填,生成簽名的時間戳
noncestr: "", //
必填,生成簽名的隨機串
signature: "", //
必填,簽名
type:0/1, //
選填。0表示微應用的jsapi,1表示服務窗的jsapi;不填預設為0。該引數從dingtalk.js的0.8.3版本開始支援
jsapilist :[
'runtime.info',
'runtime.permission.requestauthcode',
'device.notification.confirm',
'device.notification.alert',
'device.notification.prompt',
'biz.ding.post',
'biz.util.uploadimage',]
//必填,需要使用的jsapi列表,注意:不要帶dd。
});
我們先來說簡單的。當我們拿到access_token後就可以進行免登了。在頁面中引入釘釘的js檔案後,呼叫js中的api,如下
回歸正題,通過釘釘的jsapi拿到code,code也是有過期時間的,為5分鐘有效時間。拿到code後將code傳回後台加上access_token訪問釘釘的免登api,驗證成功後返回使用者資訊,其中就有使用者的唯一標識id,再使用拿到de使用者id加上access_token訪問另外乙個api,**如下。
public就此,免登入完成了。當然這種方法也有缺陷,那就是返回的使用者資訊比較少,不是那麼全面。只能拿到如下引數function
getuserinfo()
如果需要更多的使用者資訊,那我們就需要進行比較複雜的免登方式了。也就是說我們在請求使用者資訊前必須進行一次鑑權,才能拿到更多的使用者資訊。回到拿到access_token的開頭,我們從後端開始,從一開始的流程圖來看,鑑權需求ticket,noncestr,timestamp,signature,agentid,corpid這六個引數agentid和corpid是直接可以拿到的,不再贅述,ticket帶上accesstoken引數通過介面獲得,nocestr用於生成金鑰的引數,我是直接給的隨機數。timestamp當前時間戳,而
signature則是上述幾個引數通過一定演算法得到。
function ddconfig()拿到這幾個引數後將其返回到前端頁面。首先進行釘釘鑑權,**前面已經貼過,值得注意的是鑑權過程中需要初始化jsapi,只有初始化了的jsapi在後面才能被呼叫,鑑權後的過程就跟第一種方法一樣,拿著返回的code碼,請求userid和使用者資訊。最終可以拿到使用者的完整資訊。再通過與自己資料庫的資料作對比就完成了免登。
企業應用免釘流程 釘釘
前段時間公司接到乙個釘釘開發專案,在此之前小編並沒有接觸過,只能硬著頭皮看文件了,話不多說,直接上乾貨。大概流程如下 1 註冊賬號和建立第三方應用 該過程直接按照提示流程操作即可,略過 2 獲取corpid corpsecret agentid 登陸釘釘後台,corpid corpsecret獲取 ...
釘釘微應用的服務
先從如何接入釘釘微應用和獲取免登碼入手。1,需要釘釘企業號,並建立釘釘企業 2,釘釘內建立乙個微應用。3,搭建自己的本地服務或者外網web服務 4,設定微應用的首頁為本地服務的位址或者外網位址 5,引入釘釘提供的sdk 1 後端 獲取accesstoken 以及 js ticket 傳入的引數就是新...
釘釘 釘應用(微應用和E應用)開發介紹
釘釘,數位化新工作方式,讓工作更簡單 釘應用能做什麼 大多數企業在起步階段,乃至後續發展壯大的過程中,都會面臨資料管理的問題,而資料管理最有用的工具莫過於excel。財務報表,庫存報表,業務資料整理,員工積分管理,企業培訓記錄,其實都可以通過excel解決。然而隨著時間推移,業務複雜化,excel做...