此篇內容舉例爲釘釘小程序企業內部開發
1.進入釘釘小程序開發者平臺,開通通訊錄讀寫權限、手機號信息等
2.得到小程序appkey以及appsecret
3. 根據appkey和appSecret獲取 access_token
async function getAccessToken() {
return new Promise((resolve, reject) => {
dd.httpRequest({
url: 'https://oapi.dingtalk.com/gettoken?appkey=對應值&appsecret=對應值',
success: function(res) {
console.log("獲取access_token");
console.log(res.data);
access_token = res.data.access_token;
resolve(res)
}
})
})
}
4.獲取免登授權碼(這個方法api文檔提供)
dd.getAuthCode({
success: function(res) {
console.log("免登授權碼")
console.log(res)
authCode = res.authCode
}
});
5.根據access_token獲取userid
async function getUserid() {
return new Promise((resolve, reject) => {
dd.httpRequest({
url: 'https://oapi.dingtalk.com/user/getuserinfo?access_token=' + access_token + '&code=' + authCode,
success: function(res) {
console.log("獲取userid");
console.log(res.data);
userid = res.data.userid
resolve(res)
}
})
})
}
- 根據access_token和userid獲取用戶詳情
async function getUserDetail() {
return new Promise((resolve, reject) => {
dd.httpRequest({
url: 'https://oapi.dingtalk.com/user/get?access_token=' + access_token + '&userid=' + userid,
success: function(res) {
console.log("用戶詳情");
console.log(res);
resolve(res)
}
})
})
}
7.依次執行函數即可得到用戶詳情
await getAccessToken();
await getUserid();
await getUserDetail();
說明:由於釘釘提供的dd.httpRequest方法爲異步方法,而此處各種id的獲取具有依賴關係,爲保證請求依次執行使用了promise、async以及await,雖是異步,卻具有同步的效果