开发者社区> 问答> 正文

【已解决】钉钉注册通讯录接口错误:返回文本非success

这两天在调用钉钉注册通讯录事件回调接口( [font=&]https://oapi.dingtalk.com/call_back/register_call_back?access_token=ACCESS_TOKEN)的时候遇到错误:返回文本非success
查阅了网上的文档,很多人遇到此问题,有个别人解决了,但是没有说的很明白怎么解决的,最后自己摸索,终于调通了!所以记录下来,为大家节约时间!


我使用的是.NET WebAPI 实现的回调,下面直接贴代码( 重点看 下面 写 注意的地方)
         //注意:返回类型是 dynamic  ,而不是string
        public dynamic Post([FromBody]ContactEncryptRequest contactEncrypt, [FromUri] ContactRequest contact)
        {
            string token = "112121212121211";//自定义随机串
            string aes_key = "b1234567890123456789012345678901234567890ac";//自定义随机串43位
            string suiteKey = "ding**********************";//CorpID

            var dingTalkCrypt = new DingTalkCrypt(token, aes_key, suiteKey);
            string plainText = "";
            dingTalkCrypt.DecryptMsg(contact.Signature, contact.Timestamp, contact.Nonce, contactEncrypt.Encrypt, ref plainText);

            var plain = JsonConvert.DeserializeObject<dynamic>(plainText);
            if (plain.EventType == "check_url")
            {
                //------------加密数据返回-----------------------
                string signature = "";
                string encrypt = "";
                try
                {
                    dingTalkCrypt = new DingTalkCrypt(token, aes_key, suiteKey);
                    //注意:此处的 Timestamp和 Nonce是从回调接收到的
                    dingTalkCrypt.EncryptMsg("success",  contact.Timestamp, contact.Nonce,  ref encrypt, ref signature);
                }
                catch (Exception ex)
                {
                    LoggingFactory.GetLogger().Error("加密返回数据:" + ex.Message);
                }
                //注意:此处的 Timestamp和 Nonce也是从回调接收到的
                Hashtable jsonMap = new Hashtable
                {
                    {"msg_signature", signature},
                    {"timeStamp",  contact.Timestamp },
                    {"nonce",  contact.Nonce },
                    {"encrypt", encrypt}
                };
                //特别注意:不要转换为json string 类型返回,直接 返回Json对象
                //string result = JsonConvert.SerializeObject(jsonMap);
                return jsonMap;
            }
            else
            {
                return null;
            }
        }

  
  上面的代码测试通过的,如有疑问,请回复!!!或者 QQ 812410472

展开
收起
cqrcgh 2017-11-16 14:09:00 7772 0
4 条回答
写回答
取消 提交回答
  • 完美解决了我的问题,必须点个赞!

    2020-03-27 11:03:02
    赞同 展开评论 打赏
  • Re【已解决】钉钉注册通讯录接口错误:返回文本非success
    诸位楼主,这个问题有解决的吗?能简单说一下解决方案吗?
    2018-08-21 16:04:40
    赞同 展开评论 打赏
  • Re【已解决】钉钉注册通讯录接口错误:返回文本非success
    同遇到这个问题,
    2018-05-30 13:48:27
    赞同 展开评论 打赏
  • Re【已解决】钉钉注册通讯录接口错误:返回文本非success
    您好:请问您这是注册回调吗
    2018-01-02 16:03:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
钉钉小程序——为工作方式插上翅膀 立即下载
钉钉客户端自动化的应用 立即下载
使命必达 —— 钉钉企业级 消息服务的机遇与挑战 立即下载