釘釘開發筆記(一)

釘釘開發分爲:一、移動客戶端。二、PC端。三、服務端。三個平臺的開發。

一、移動端:面對釘釘手機用戶和企業用戶。

二、同上主要面向PC端的用戶和企業。

三、服務端,用於用戶和企業內部管理的平臺方向,例如OA網站。

 

本人主要從事移動端和PC端的開發,因此,本筆記主要記錄在這些問題中碰見的問題和困難,但願對你們有所幫助!web

 

開發流程:算法

1、免登流程圖   點擊查看步驟api

 

2、步驟詳細:

步驟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。url

請求說明spa

Https請求方式:GET3d

https://oapi.dingtalk.com/get_jsapi_ticket?access_token=ACCESS_TOKENcode

 

 

步驟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

相關文章
相關標籤/搜索