微信小程序开发之--消息推送配置Token令牌错误校验失败如何解决
凌雪 2018-10-10 来源 :网络 阅读 5558 评论 0

摘要:本文将带你了解微信小程序开发之--消息推送配置Token令牌错误校验失败如何解决,希望本文对大家学微信有所帮助。

本文将带你了解微信小程序开发之--消息推送配置Token令牌错误校验失败如何解决,希望本文对大家学微信有所帮助。


本想在微信小程序中接入上传图片到阿里云功能,小程序中查询很多资料还是没能将图片转成流上传,
所以无奈只能借助小程序官方API中客服转发功能上传素材间接实现:
   
    1.将小程序选择的照片上传至微信临时服务器并返回图片url;
    2.将url返回给自己的后台,后台通过url获取流再上传至阿里OSS;
   
    校验失败,请检查确认 如下图URL:填写自己写的接口路径,需要已经调试好并且发布到正式域名地址下才可以; 注意   : 当点击下方的 提交 按钮时,微信会请求一次数据给你的URL地址Token(令牌): 自己随便起个名字就行英文数字3-32字符;EncodingAESKey: 点随机生成吧,省的自己写;加密方式: 兼容就行数据格式: 看个人喜好一般Json吧然后就可以看着 消息配置指南 操作了,这里我详细在用大白话说下,官方给的是PHP的代码…上面说到微信会请求你填写的URL地址,我们先来看下微信这个GET请求的参数请求方式 : GET参数描述signature微信加密签名(不用管他是怎么来的,反正是很长的一串)timestamp时间戳 eg:1501060062nonce随机数 eg:2535181275echostr随机字符串 eg:143242961671755437752. 大概了解了参数我们这个接口就好写多了,我们屡一下这几个参数的处理逻辑;1)   还记得上面自己填写的token吧3-32字符的那个,这里要用到;2) 将timestamp nonce token 这三个参数对应的值进行字典排序;什么是字典排序?3) 排序后将这三个参数对应的值,只要值,拼接成string字符串;4) 将拼接好的字符串SHA1加密,注意要小写字母,假设返回的string我命名为 secret ;5) 比较参数 signature 和 secret 值是否相等;如果相等表示验证成功,并且原封不动的返回 echostr如果不相等表示验证失败,返回写不写哇,你爱咋咋将写好的接口发布到服务器上,然后在微信的消息配置页面填好信息,点击 提交 则会提示成功官方给的PHP,我这二吊子水平用.Net写的代码给大家做参考:    /// <summary>
    /// 微信消息配置
    /// </summary>
    public class GetWxMsg :   IHttpHandler
    {
        private static Logger logger   = LogManager.GetCurrentClassLogger();
        public void   ProcessRequest(HttpContext context)
        {
            var signature =   context.Request["signature"];
            var timestamp =   context.Request["timestamp"];
            var nonce =   context.Request["nonce"];
            var echostr =   context.Request["echostr"];
   
                logger.Info("微信消息服务器验证传入数据" +   string.Format("signature:{0},timestamp:{1},nonce:{2},echostr:{3}",   signature, timestamp, nonce, echostr));
   
                var token =   "aaaaaaa";//自定义字段(自己填写3-32个字符)
   
                //timestamp和token和nonce 字典排序
              Dictionary<string, string> dic = new Dictionary<string,   string>();
              dic.Add("token", token);
              dic.Add("nonce", nonce);
              dic.Add("timestamp", timestamp);
            var list = dic.OrderBy(s   => s.Value);
            var conbineStr =   "";
            foreach (var s in   list)
            {
                conbineStr =   conbineStr + s.Value;
            }
            string data = conbineStr;
            //sha1加密
              string secret =   FormsAuthentication.HashPasswordForStoringInConfigFile(conbineStr,   "SHA1").ToLower();
            var success = signature   == secret;
            if (success)
            {
                data = echostr;
            }
              context.Response.ContentType = "text/plain";
              context.Response.Write(data);
        }    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 3 不喜欢 | 15
看完这篇文章有何感觉?已经有18人表态,17%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程