微信分享接口
2015-12-29 17:48
639 查看
一、问题说明
如果出现 invalid signature,首先可以确定的是你的签名算法有问题。建议:首先查看微信官方网站给出的解决方案,链接为 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
invalid signature签名错误。建议按如下顺序检查:
确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。也就是你自己后台生成签名要和微信校验算法生成的签名一致才可以(可能大小写不同)。
注意:
签名生成规则如下:
参与签名的字段包括有效的 jsapi_ticket(获取方式详见微信 JSSDK 文档), noncestr (随机字符串,由开发者随机生成),timestamp (由开发者生成的当前时间戳), url(当前网页的URL,不包含#及其后面部分。注意:对于没有只有域名没有 path 的 URL ,浏览器会自动加上 / 作为 path,如打开 http://qq.com 则获取到的 URL 为 http://qq.com/)。
特别注意:你在利用参数生成签名的时候,要对所有待签名参数按照字段名的
ASCII 码从小到大排序(字典序)后,使用 URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串 string1。这里需要注意的是所有参数名均为小写字符。
我的最开始的错误就是没有注意到生成签名的那几个参数要按照key=value的样式连接成一个字符串,然后在sha1加密生成。
?
确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。
确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
确保一定缓存access_token和jsapi_ticket。
确保你获取用来签名的url是动态生成的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
错误2、每次后台网页更新之后,微信访问效果没有出来。
问题:手机端,网页缓冲导致。
解决方案:重启手机,再试一下。
错误3、微信分享接口,可以在自己的网页上面自定义一个按钮,当用户点击的时候完成分享。
问题:我最开始也是这样想的,后来发现,原来不是这样的,只有当你用微信客户端打开,在最上面右边的 “分享到朋友圈”按钮按的时候效果才会出来。
错误4、微信图像接口 permission denied
首先查看微信给出的错误说明:该公众号没有权限使用这个JSAPI(部分接口需要认证之后才能使用)。
说明:只要通过了公众号认证,都不会有问题。
检查对象:如果出现这个说明程序上基本上不会有问题 微信后台已经返回了数据。
第一、要检查 你的config 文件中相应的 jsapilist
是否包含了该接口哟。
?
二、实例说明
获得jsticket?
?
相关文章推荐
- Ionic微信开发之环境配置
- 类似微信红包随机分配js方法
- .net微信授权登录整理
- Nagios全方位接入告警-微信/电话/短信都支持
- iOS微信分享功能简单实现
- 面对色情 腾讯放大招:关停QQ、微信群 封个人账号
- 仿微信图片选择器
- 使用谷歌浏览器模拟微信(android或ios)浏览器
- 微信公众账号开发文档
- Android 微信支付 代码混淆后打包,导致不能支付的原因
- Android仿微信顶/底部菜单栏效果
- 微信模板消息接口、微信客服接口
- Android仿微信实现下拉列表
- 微信公众号开发之[发送模板消息]
- 微信公众号开发之获取access_token[java版]
- Android仿微信/支付宝密码输入框
- 微信开发学习路线
- 微信开发学习路线
- 微信redirect-uri参数错误 的解决办法
- 微信开发小记