微信自定义分享:invalid signature签名错误!求解?

问题描述

官方提供的排错方法:invalidsignature签名错误。建议按如下顺序检查:1)、确认签名算法正确,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign页面工具进行校验。2)、确认config中nonceStr(js中驼峰标准大写S),timestamp与用以签名中的对应noncestr,timestamp一致。3)、确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。4)、确认config中的appid与用来获取jsapi_ticket的appid一致。5)、确保一定缓存access_token和jsapi_ticket。6)、确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。其中使用(1)校验工具,确认生成的签名是正确,排(2)、(3)(写死的调用jweixin.0.0.0.js页面地址)、(4)(直接通过接口生成签名返回的json给的配置文件)、(5)(生成后保存在session里)、(6)没看懂!///<summary>///获取微信凭证signature///</summary>protectedvoidGetAccessSignature(){strings="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";stringr=string.Empty;Randomrandom=newRandom();Enumerable.Repeat<int>(0,16).ToList().ForEach(x=>r+=s[random.Next(s.Length)]);stringnoncestr=r;stringjsapi_ticket=GetAccessTicket();inttimestamp=Int32.Parse(((DateTime.Now.ToUniversalTime().Ticks-621355968000000000)/10000000).ToString());stringurl="http://wechat.xxxx.com/list.aspx";stringqueryString="jsapi_ticket="+jsapi_ticket+"&noncestr="+noncestr+"&timestamp="+timestamp+"&url="+url;stringsignature=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(queryString,"SHA1");MsignaturemC=newMsignature();mC.appid=ConfigurationManager.AppSettings["Appid"].ToString();mC.noncestr=noncestr;mC.timestamp=timestamp;mC.signature=signature.ToLower();Response.Write(JsonConvert.SerializeObject(mC));}

_appid=wC[0].appid;_timestamp=wC[0].timestamp;_nonceStr=wC[0].noncestr;_signature=wC[0].signature;//alert(_signature);wx.config({debug:false,appId:_appid,timestamp:_timestamp,nonceStr:_nonceStr,signature:_signature,jsApiList:['checkJsApi','onMenuShareTimeline','onMenuShareAppMessage']});//alert(location.href.split('#')[0]);wx.ready(function(){wx.onMenuShareTimeline({title:'测试',link:'http://wechat.xxxx.com',imgUrl:'http://www.tyninfo.com/data/upload/shop/editor/web-122-122-1.jpg?488',success:function(){alert("分享成功");},cancel:function(){alert("您取消了分享");}});

解决方案

时间: 2024-12-23 13:00:42

微信自定义分享:invalid signature签名错误!求解?的相关文章

微信自定义分享php代码分析_php实例

前一段之间做微信自定义分享,积累了一些经验,分享给大家. 步骤一.二在微信开发者文档中已经很详细了,直接从步骤三开始吧. 步骤三要参数微信的参数,除了appId之外,其他的参数都是动态的,这里,我用的php语言,在后端生成的参数,代码如下: php端代码: public function getwxinfo(){ $dataurl = I('dataurl'); include('./ThinkPHP/Library/Vendor/jssdk/jssdk.php'); $jssdk = new

微信自定义分享php代码分析

前一段之间做微信自定义分享,积累了一些经验,分享给大家. 步骤一.二在微信开发者文档中已经很详细了,直接从步骤三开始吧. 步骤三要参数微信的参数,除了appId之外,其他的参数都是动态的,这里,我用的php语言,在后端生成的参数,代码如下: php端代码: public function getwxinfo(){ $dataurl = I('dataurl'); include('./ThinkPHP/Library/Vendor/jssdk/jssdk.php'); $jssdk = new

基于thinkPHP实现的微信自定义分享功能示例

本文实例讲述了基于thinkPHP实现的微信自定义分享功能.分享给大家供大家参考,具体如下: 在许多大的网站我们都会看到点击分享就可以把数据分享到微信或QQ或其它的平台了,下面我们来看一段php版微信自定义分享代码,代码参考官方开发的没有任何问题. 分享需要认证微信订阅号或者服务号. php 代码(thinkphp): $appid='xxx'; $appsecret='xxxx'; $timestamp = time(); $noncestr = $this->getRandStr(15);

php版微信自定义分享代码

分享需要认证微信订阅号或者服务号. php 代码(thinkphp): $appid='xxx';  $appsecret='xxxx';    $timestamp = time();  $noncestr = $this->getRandStr(15);    // dump();    $url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='. $this->get_token($appid,$ap

微信自定义分享-tomcat下部署一手机访问的项目微信分享朋友圈时不能显示自定义的图标

问题描述 tomcat下部署一手机访问的项目微信分享朋友圈时不能显示自定义的图标 如题,html中可以写微信分享的代码,但是部署在tomcat下自定义的无效

微信公众号自定义分享内容实现

一.准备阶段 公众号一个,微网站一个.  二.绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名".备注:登录后可在"开发者中心"查看对应的接口权限. 三.代码 <?php //curl获取请求文本内容 function get_curl_contents($url, $method ='GET', $data = array()) {     if ($method == 'POST'

微信分享报错invalid signature

问题描述 后台代码publicpartialclasstest:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){//获取tokenstringtoken="";stringtokenc=CookieHelper.Get("token");if(!string.IsNullOrEmpty(tokenc)){token=tokenc;}else{stringgettoken="

请教大神帮我解决下微信JSSDk接口签名错误的问题?在线等

问题描述 config配置权限验证时要获取接口的签名首先要根据oppid获取access_token公众号的全局唯一票据然后再根据access_token获取jsapi_ticket最后再根据jsapi_ticket获得签名但是怎么弄都提示签名错误.......官网说:参数按照字段名的ASCII码从小到大排序确认config中noncestr,timestamp与用以签名中的对应noncestr,timestamp一致.确认url是页面完整的url,包括GET参数部分.确认config中的app

微信-代公众号使用JS SDK,wx.config报invalid signature

问题描述 代公众号使用JS SDK,wx.config报invalid signature 我按照微信官方的方法,1.确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验.2.确认config中nonceStr(js中驼峰标准大写S) timestamp与用以签名中的对应noncestr timestamp一致.3.确认url是页面完整的url(请在当前页面alert(location.hre