釘釘開發分為:1、移動客戶端。2、PC端。3、服務端。三個平臺的開發。
1、移動端:面對釘釘手機用戶和企業用戶。
2、同上主要面向PC端的用戶和企業。
3、服務端,用于用戶和企業內部管理的平臺方向,例如OA網站。
?
本人主要從事移動端和PC端的開發,所以,本筆記主要記錄在這些問題中遇見的問題和困難,希望對大家有所幫助!
?
開發流程:
一、免登流程圖 ? 點擊查看步驟
?
二、步驟詳細:
步驟1:獲取CorpID、CorpSecret(在企業釘釘微應用設置中獲取)
?
步驟2:獲取AccessToken。
開發者在調用開放平臺接口前需要通過CorpID和CorpSecret獲取AccessToken。獲取AccessToken的方法是向?
https://oapi.dingtalk.com/gettoken?corpid=id&corpsecret=secrect?GET請求。
?
?
步驟3:獲取jsapi_ticket(服務器中調用,用以生成可用的ticket)點擊查看官方文檔?
?
獲取jsapi_ticket
企業在使用微應用中的JS API時,需要先從釘釘開放平臺接口獲取jsapi_ticket生成簽名數據,并將最終簽名用的部分字段及簽名結果返回到H5中,JS API底層將通過這些數據判斷H5是否有權限使用JS API。
請求說明
Https請求方式:GET
https://oapi.dingtalk.com/get_jsapi_ticket?access_token=ACCESS_TOKEN
?
?
步驟4:簽名生成算法
開發者在web頁面使用釘釘容器提供的jsapi時,需要驗證調用權限,并以參數signature標識合法性
簽名生成的規則:
List keyArray = sort(noncestr,timestamp,jsapi_ticket,url);
String str = assemble(keyArray);
signature = sha1(str);
?
參與簽名的字段包括在上文中獲取的jsapi_ticket,noncestr(隨機字符串,自己隨便填寫即可),timestamp(當前時間戳,具體值為當前時間到1970年1月1號的秒數),url(當前網頁的URL,不包含#及其后面部分,需要對url中query部分做一次urldecode)。例如:
noncestr=Zn4zmLFKD0wzilzM
jsapi_ticket=mS5k98fdkdgDKxkXGEs8LORVREiweeWETE40P37wkidkfksDSKDJFD5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcKIDU8l
timestamp=1414588745
url=//open.dingtalk.com
注意:若頁面url為http://abc.com?url=http%3A%2F%2Fabc.com%2somewhere,則用于生成簽名的url應對query部分做一次urldecode,正確結果應為http://abc.com?url=http://abc.com/somewhere
步驟1. sort()含義為對所有待簽名參數按照字段名的ASCII 碼從小到大排序(字典序)
步驟2. assemble()含義為根據步驟1中獲的參數字段的順序,使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串
步驟2. sha1()的含義為對在步驟2拼接好的字符串進行sha1加密。
?
?
?
步驟5:獲取免登用戶信息?擊查看官方文檔
?
通過CODE換取用戶身份
企業應用的服務器在拿到CODE后,需要將CODE發送到釘釘開放平臺接口,如果驗證通過,則返回CODE對應的用戶信息。**此接口只用于免登服務中用來換取用戶信息**
請求說明
Https請求方式: GET
https://oapi.dingtalk.com/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
?
?
?
?
?