题外:很多.net新人或是出于兴趣或是领导任务,满怀壮志的准备来钉钉大干一场。两眼一摸黑的情况下,多希望有个Hello World帮助入门呀。可是翻遍官网发现,官方提供的Demo有各大主流开发语言的,惟独没有.net。这时候不禁一个冷战,.net过时了……既然入错了行,没办法还得硬着头皮继续往下走,除了冷冷的开发文档外,真是一筹莫展……唉,废话少叙,上Demo了
第一步:登录钉钉后台oa.dingtalk.com,点击导航“微应用”-“微应用设置”,在右侧下方可以看到CorpID和CorpSecret,前者企业ID,后者密钥。注意:这俩东东任何时候不要给外人看,一但泄露是不可重新生成的。
第二步:进入开发,vs2010,vs2012,vs2013都可以,下面是核心代码。
用webClient模拟请求钉钉的接口,将返回的结果反序列化成实体。
var url = "https://oapi.dingtalk.com/gettoken?corpid=" + AuthHelper.Option.CorpID + "&corpsecret=" + AuthHelper.Option.CorpSecret;
var client = new System.Net.WebClient();
var result = client.DownloadString(url);
var ret = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<RetAccessToken>(result);
第三步:上面的代码中涉及到一个实体RetAccessToken
/// <summary>
/// 获取AccessToken返回值
/// </summary>
public class RetAccessToken
{
/// <summary>
/// 错误码
/// </summary>
public int errcode { get; set; }
/// <summary>
/// 错误信息
/// </summary>
public string errmsg { get; set; }
/// <summary>
/// 获取到的凭证
/// </summary>
public string access_token { get; set; }
}
第四步:本步是扩展思考,文档中提到token有效期是7200s,从性能的角度考虑,在拿到token后我们应该缓存起来,并且缓存有效期设置7200s,下次请求,优先判断缓存token是否存在。
_value = rs.access_token;
保险期间,我设置缓存时间为7000s,呵呵。
HttpContext.Current.Cache.Insert(CacheKeys.ACCESS_TOKEN, _value, null, now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。