开发者社区> 问答> 正文

错误原因返回字符串不匹配 net

ISV接入
使用官方Demo (suite-demo-c--master) C# 已修改对应参数
验证有效性时一直提示 [font="]错误原因: [font="]返回字符串不匹配


看了论坛上的方法和文档,还是无法解决


输出的日志如下
2017/1/11 16:01:23: mSuiteKey:suite4xxxxxxxxxxxxxxx
2017/1/11 16:01:23: msgSignature:8731738c43eb377b56d5c683b220edec67a9f612
2017/1/11 16:01:23: timeStamp:1484121683750
2017/1/11 16:01:23: nonce:FEMhhd4n

2017/1/11 16:01:24: plainText:{"EventType":"check_create_suite_url","Random":"PEIwoVwR","TestSuiteKey":"suite4xxxxxxxxxxxxxxx"}
2017/1/11 16:01:24: eventType:check_create_suite_url
2017/1/11 16:01:24: encrypt解密:success

2017/1/11 16:01:24: result:{"encrypt":"hvYr7KeLBz1fgvnh7lIIlBkabO/Rnb3dYhRZmXG+vp+oroXojS/yTLnZj/q4ucFzqzLrMXYlKyEKVceJOwjpOg==","nonce":"FEMhhd4n","timeStamp":"1484150485","msg_signature":"448990f70a926baf64aff3420625bea58ffb2a62"}
程序代码以下:
string encrypt = "";
                string signature = "";
                string encrypt1 = "";
                string signature1 = "";
                dingTalk = new DingTalkCrypt(mToken, mEncodingAesKey, mSuiteKey);
                dingTalk.EncryptMsg(res, timeStamp, nonce, ref encrypt, ref signature);
                dingTalk.DecryptMsg (msgSignature, timeStamp, nonce, encrypt, ref encrypt1);
                Helper.WriteLog ("encrypt解密:" + encrypt1);

                Hashtable jsonMap = new Hashtable
                {
                    {"msg_signature", signature},
                    {"encrypt", encrypt},
                    {"timeStamp",  timeStamp},
                    {"nonce", nonce}

                };
                string result = JsonConvert.SerializeObject(jsonMap);
                Helper.WriteLog ("result:" + result);
                context.Response.ContentType = "text/plain";
                context.Response.Write(result);



展开
收起
明州府 2017-01-11 16:09:11 2936 0
2 条回答
写回答
取消 提交回答
  • 回 楼主明州府的帖子
    贴出的日志就是服务器中的。
    2017/1/11 16:01:24: encrypt解密:success
    这行是特意加的本地解密后的回复内容。

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

    Re错误原因返回字符串不匹配 net
    有谁知道吗

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

    Re错误原因返回字符串不匹配 net
    找到原因了,是官方DEMO有问题,不应该啊。
    原因是作者是在早就连接成功情况下写的DEMO,没有考虑到新测试时的问题。
    错误出在Receive.ashx
       //eventType 计算出的值是check_create_suite_url,但源代码中的switch中没这项,所以res 值一直是success.
                 switch (eventType)
                    {
                        case "suite_ticket"://定时推送Ticket
                            ConfigurationManager.AppSettings["SuiteTicket"] = tb["SuiteTicket"].ToString();
                            mSuiteKey = tb["SuiteKey"].ToString();
                            suiteAuth.SaveSuiteTicket(tb);
                            break;
                        case "tmp_auth_code"://钉钉推送过来的临时授权码
                            ConfigurationManager.AppSettings["TmpAuthCode"] = tb["AuthCode"].ToString();
                            suiteAuth.SaveTmpAuthCode(tb);
                            break;
                        case "change_auth":// do something;
                            break;
                       //加上这段,检测通过!!!
                        case "check_create_suite_url":
                            {
                                res = tb["Random"].ToString();
                                mSuiteKey = tb["TestSuiteKey"].ToString();
                            }break;
                        case "check_update_suite_url":
                            res = tb["Random"].ToString();
                            mSuiteKey = tb["TestSuiteKey"].ToString();
                            break;
                    }
    2017-01-12 08:24:24
    赞同 展开评论 打赏
  • 看看服务端具体的执行log,是否是解密失败等原因
    2017-01-11 21:53:47
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

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