/// <summary> /// 获取企业授权的授权数据 /// </summary> /// <param name="suiteKey">应用套件key</param> /// <param name="authCorpid">授权方corpid</param> /// <param name="permanentCode">永久授权码,通过get_permanent_code获取</param> /// <returns> ///auth_corp_info 授权方企业信息 ///corpid 授权方企业id ///corp_name 授权方企业名称 ///corp_logo_url 企业logo ///auth_info 授权信息 ///agent 授权的应用信息 ///agentid 授权方应用id ///agent_name 授权方应用名字 ///logo_url 授权方应用头像 ///appid 服务商套件中的对应应用id /// </returns> public AuthCorp GetAuthInfo(string suiteKey, string suiteAccessToken, string authCorpid, string permanentCode) { string postUrl = "https://oapi.dingtalk.com/service/get_auth_info?suite_access_token=" + suiteAccessToken; string postData = "{\"suite_key\": \"" + suiteKey + "\",\"auth_corpid\": \"" + authCorpid + "\",\"permanent_code\": \"" + permanentCode + "\"}"; string result = WebRequestPost(postUrl, postData); //Helper.WriteLog("result:" + result); Logger.InfoFormat("result:" + result); var ser = new DataContractJsonSerializer(typeof(AuthCorp)); var ms = new MemoryStream(Encoding.UTF8.GetBytes(result)); AuthCorp authCorp = (AuthCorp)ser.ReadObject(ms); return(authCorp); }
/// <summary> /// 保存服务器推送临时授权码 /// </summary> /// <param name="tb"></param> public void SaveTmpAuthCode(Hashtable tb) { SuiteKeyInfo suiteKeyInfo = new SuiteKeyInfo(tb["SuiteKey"]); DingApiDispatch dingApi = new DingApiDispatch(suiteKeyInfo.SuiteKey, suiteKeyInfo.SuiteSecret, suiteKeyInfo.SuiteTicket); //用临时授权码获得永久授权码 PermanentCode permanentCode = dingApi.GetPermanentCode(suiteKeyInfo.SuiteToken, tb["AuthCode"].ToString()); SuiteCorpInfo suiteCorp = new SuiteCorpInfo(SuiteCorpInfo.Columns.Corpid, permanentCode.auth_corp_info.corpid); suiteCorp.SuiteKey = suiteKeyInfo.SuiteKey; suiteCorp.TmpAuthCode = tb["AuthCode"].ToString(); suiteCorp.PermanentCode = permanentCode.permanent_code; suiteCorp.Corpid = permanentCode.auth_corp_info.corpid; suiteCorp.CorpName = permanentCode.auth_corp_info.corp_name; //获取企业授权的access_token CorpAccessToken corpAccessToken = dingApi.GetCorpToken(suiteKeyInfo.SuiteToken, suiteCorp.Corpid, suiteCorp.PermanentCode); suiteCorp.AccessToken = corpAccessToken.access_token; suiteCorp.TokenExpires = DateTime.Now.AddSeconds(corpAccessToken.expires_in); //获取企业授权的授权数据 AuthCorp authCorp = dingApi.GetAuthInfo(suiteKeyInfo.SuiteKey, suiteKeyInfo.SuiteToken, suiteCorp.Corpid, suiteCorp.PermanentCode); suiteCorp.CorpLogoUrl = authCorp.auth_corp_info.corp_logo_url; suiteCorp.Mobile = authCorp.auth_user_info.mobile; suiteCorp.Name = authCorp.auth_user_info.name; suiteCorp.Save(); try { foreach (AgentInfo angInfo in authCorp.auth_info.agent) { SuiteCorpAgent suiteCorpAgent = new Select().From(SuiteCorpAgent.Schema) .Where(SuiteCorpAgent.Columns.CorpId).IsEqualTo(suiteCorp.Corpid) .And(SuiteCorpAgent.Columns.AgentId).IsEqualTo(angInfo.agentid) .ExecuteSingle <SuiteCorpAgent>() ?? new SuiteCorpAgent(); suiteCorpAgent.SuiteKey = suiteKeyInfo.SuiteKey; suiteCorpAgent.CorpId = suiteCorp.Corpid; suiteCorpAgent.AgentId = angInfo.agentid; suiteCorpAgent.AgentName = angInfo.agent_name; suiteCorpAgent.LogoUrl = angInfo.logo_url; suiteCorpAgent.Appid = angInfo.appid; dingApi.ActivateSuite(suiteKeyInfo.SuiteKey, suiteKeyInfo.SuiteToken, suiteCorp.Corpid, suiteCorp.PermanentCode); Agent agent = dingApi.GetAgent(suiteKeyInfo.SuiteKey, suiteKeyInfo.SuiteToken, suiteCorp.Corpid, suiteCorp.PermanentCode, suiteCorpAgent.AgentId); suiteCorpAgent.Description = agent.description; suiteCorpAgent.IsClose = agent.close; suiteCorpAgent.Save(); } } catch (Exception ex) { Logger.InfoFormat("Err", ex.Message); //Helper.WriteLog("Err:" + ex.Message); } }