开发者社区> 问答> 正文

Net开发之获取AccessToken


题外:很多.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;
                    HttpContext.Current.Cache.Insert(CacheKeys.ACCESS_TOKEN, _value, null, now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
保险期间,我设置缓存时间为7000s,呵呵。

展开
收起
lovezsr 2015-08-13 15:10:49 10156 0
5 条回答
写回答
取消 提交回答
  • 回 楼主lovezsr的帖子
    你这个代码放到服务器上面会报
    The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

    -------------------------

    Net开发之获取AccessToken
    The remote certificate is invalid according to the validation procedure.
    远程证书根据验证过程无效

    The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
    在本地运行可以,部署到服务器就报这些错误,求解答
    2016-06-13 14:51:58
    赞同 展开评论 打赏
  • 回3楼陈永浩的帖子
    兄弟有没有把.net的SDK弄好呀,发我一份?
    2015-10-15 10:13:25
    赞同 展开评论 打赏
  • ReNet开发之获取AccessToken
    怎么能说.net过时呢,我正在弄钉钉的.net调用的sdk
    2015-08-26 11:15:57
    赞同 展开评论 打赏
  • 厉害,
    2015-08-24 10:20:02
    赞同 展开评论 打赏
  • 回楼主lovezsr的帖子
    帮楼主补充下:
    [    sell=1,money]var client = new WebClient();
    //增加如下代码
    client.Encoding = Encoding.UTF8;

    2015-08-18 14:51:42
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载