/// <summary> /// 如果需要用户的详细信息,则需要建立一个企业内部应用,并将AppKey和AppSecret传递到Config参数中DingCorpAppKey和DingCorpAppSecret /// 如果扫描的用户不是企业的员工,则能拿到unionID,但是无法获取userid /// </summary> /// <returns></returns> private DingdingUserInfoEntity GetUserInfoByCorp() { var url = $"{Corp_AccessToken_Url}?appkey={param.DingCorpAppKey}&appsecret={param.DingCorpAppSecret}"; var result = HttpUtil.Get(url); DingdingAccessTokenEntity corp_accToken = JsonConvert.DeserializeObject <DingdingAccessTokenEntity>(result); if (corp_accToken == null || corp_accToken.errcode != "0") { throw new Exception("获取企业应用Token 出错"); } url = $"{Userid_Url}?access_token={corp_accToken.access_token}"; var data = "{\"unionid\": \"" + _persistentCode.unionid + "\"}"; result = HttpUtil.Post(data, url, contentType: "application/json"); DingdingUseridEntity dingdingPersistentCodeEntity = JsonConvert.DeserializeObject <DingdingUseridEntity>(result); if (dingdingPersistentCodeEntity == null || dingdingPersistentCodeEntity.errcode != "0") { throw new Exception("获取不到用户具体userid信息"); } url = $"{UserInfo_Url}?access_token={corp_accToken.access_token}"; data = "{\"userid\": \"" + dingdingPersistentCodeEntity.result.userid + "\"}"; result = HttpUtil.Post(data, url, contentType: "application/json"); DingdingUserInfoEntity dingding_Userinfo = JsonConvert.DeserializeObject <DingdingUserInfoEntity>(result); if (dingding_Userinfo == null) { throw new Exception("获取不到用户信息获取失败"); } return(dingding_Userinfo); }
public override FormatedUserInfo GetUserInfo() { var userInfoRawJson = GetRawUserInfo(); if (string.IsNullOrWhiteSpace(userInfoRawJson)) { throw new Exception("获取钉钉用户信息失败"); } DingdingUserInfoEntity dingding_Userinfo = JsonConvert.DeserializeObject <DingdingUserInfoEntity>(userInfoRawJson); return(new FormatedUserInfo() { UnionId = dingding_Userinfo.result.unionid, Channel = "dingding", NickName = dingding_Userinfo.result.name, Gender = "n", //钉钉中没有性别 Avatar = dingding_Userinfo.result.avatar }); }