本人主要從事移動端和PC端的開發,因此,本筆記主要記錄在這些問題中碰見的問題和困難,但願對你們有所幫助!web
開發流程:算法
1、免登流程圖 點擊查看步驟api
開發者在調用開放平臺接口前須要經過CorpID和CorpSecret獲取AccessToken。獲取AccessToken的方法是向 服務器
https://oapi.dingtalk.com/gettoken?corpid=id&corpsecret=secrect GET請求。網站
獲取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
開發者在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對應的用戶信息。**此接口只用於免登服務中用來換取用戶信息**
請求說明
Https請求方式: GET
https://oapi.dingtalk.com/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE