using DingTalk.Api; using DingTalk.Api.Request; using DingTalk.Api.Response; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; using System.Web.Caching; namespace HH.YiDaSyncNC.Helper { class CommHelper { private static readonly string appKey = ConfigurationManager.AppSettings["AppKey"]; private static readonly string appSecret = ConfigurationManager.AppSettings["AppSecret"]; /// /// 时间转时间戳(秒) /// /// 时间 /// public static long GetTimeStamp(DateTime date) { //var unix = date.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0); //TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); //return Convert.ToInt64(unix.TotalSeconds * 1000); var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); return Convert.ToInt64((date.ToUniversalTime() - epoch).TotalSeconds); } /// /// 时间转时间戳(毫秒) /// /// 日期 /// public static long GetTimeStamps(DateTime date) { var unix = date.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0); TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); return Convert.ToInt64(unix.TotalSeconds * 1000); } /// /// 时间戳转时间(毫秒) /// /// /// public static DateTime GetDateTime(long timestamp) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));//当地时区 var time = startTime.AddMilliseconds(timestamp); return time; } #region 获取AccessToken public static string GetAccessToken() { // 将AccessToken存储至缓存 SetAccessToken(new CacheItemRemovedReason()); // 输出缓存中存储的AccessToken return HttpRuntime.Cache.Get("Dingtalk_AccessToken").ToString(); } #endregion #region 设置AccessToken(企业内部开发) public static void SetAccessToken(CacheItemRemovedReason reason) { //企业内部开发 var accessToken = HttpRuntime.Cache.Get("Dingtalk_AccessToken"); if (accessToken == null) { //var time = GetTimeStamp(DateTime.Now); //var CorpId = corpid; //var AgentId = agentid; //var CustomKey = customkey; //var CustomSecret = customsecret; //string stringToSign = time+"\n"+"suiteTicket"; //var signature = getSHA256(CustomSecret, stringToSign); //DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/get_corp_token"); //OapiServiceGetCorpTokenRequest req = new OapiServiceGetCorpTokenRequest(); //req.AuthCorpid = CorpId; //OapiServiceGetCorpTokenResponse response = client.Execute(req, CustomKey, CustomSecret, "suiteTicket"); //HttpRuntime.Cache.Insert("Dingtalk_AccessToken", response.AccessToken, null, DateTime.Now.AddSeconds(3600), Cache.NoSlidingExpiration); IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken"); OapiGettokenRequest request = new OapiGettokenRequest(); request.Appkey = appKey; request.Appsecret = appSecret; request.SetHttpMethod("GET"); OapiGettokenResponse response = client.Execute(request); HttpRuntime.Cache.Insert("Dingtalk_AccessToken", response.AccessToken, null, DateTime.Now.AddSeconds(3600), Cache.NoSlidingExpiration); } } #endregion } }