看起来是login呼叫顺序的问题。 你的login在callback中呼叫,每次呼叫login会刷新code,随之session_key也会改变。 导致你在解密数据时,用新的获得的session去解密旧的,当然会出错啦。 验证这个问题也简单,你可以把提交的数据都打印出来,对比一下第一次失败和第二次成功的数据,看一下两次的key。
解密有概率出现41003的问题在登陆的时候,如果隔一段时间,再点击登陆按钮,第一次会失败,服务解密那里41003,第二次才能成功 在获取群分享的open_gid也一样,用户第一次点击分享卡片进来是可以的,后面再点击就41003了 这是我群分享的写法 [代码]this[代码][代码].share_tk();[代码][代码]share_tk: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]var[代码] [代码]shareTicket = wx.getStorageSync([代码][代码]'shareTicket'[代码][代码]);[代码][代码] [代码][代码]var[代码] [代码]shop_id = wx.getStorageSync([代码][代码]'shop_id'[代码][代码]);[代码][代码] [代码][代码]if[代码] [代码](!util.isNotEmpty(shareTicket)) {[代码][代码] [代码][代码]return[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]var[代码] [代码]t = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]wx.getShareInfo({[代码][代码] [代码][代码]shareTicket: shareTicket,[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]wx.checkSession({[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]var[代码] [代码]session_key = wx.getStorageSync([代码][代码]'session_key'[代码][代码]);[代码][代码] [代码][代码]t.ajax_share(res.encryptedData, res.iv, session_key);[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]wx.login({[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](lres) {[代码][代码] [代码][代码]if[代码] [代码](lres.code) {[代码][代码] [代码][代码]var[代码] [代码]post_data = {[代码][代码] [代码][代码]m: [代码][代码]'mall'[代码][代码],[代码][代码] [代码][代码]c: [代码][代码]'ApiLogin'[代码][代码],[代码][代码] [代码][代码]a: [代码][代码]'get_session'[代码][代码],[代码][代码] [代码][代码]code: lres.code,[代码][代码] [代码][代码]};[代码][代码] [代码][代码]util.ajax(post_data, [代码][代码]function[代码] [代码](data) {[代码][代码] [代码][代码]wx.setStorageSync([代码][代码]'session_key'[代码][代码], data.data);[代码][代码] [代码][代码]t.ajax_share(encryptedData, iv, data.data);[代码][代码] [代码][代码]}, [代码][代码]null[代码][代码], [代码][代码]true[代码][代码]);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]}[代码][代码] [代码][代码]});[代码] [代码] [代码][代码]}[代码][代码] [代码][代码]})[代码] [代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码]//分享函数[代码][代码] [代码][代码]ajax_share: [代码][代码]function[代码] [代码](encryptedData, iv, session_key) {[代码][代码] [代码][代码]var[代码] [代码]shareTicket = wx.getStorageSync([代码][代码]'shareTicket'[代码][代码]);[代码][代码] [代码][代码]var[代码] [代码]shop_id = wx.getStorageSync([代码][代码]'shop_id'[代码][代码]);[代码][代码] [代码][代码]var[代码] [代码]token = wx.getStorageSync([代码][代码]'token'[代码][代码]);[代码][代码] [代码][代码]var[代码] [代码]t = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]console.log([代码][代码]'发送分享信息'[代码][代码]);[代码][代码] [代码][代码]var[代码] [代码]post_data = {[代码][代码] [代码][代码]m: [代码][代码]'Share'[代码][代码],[代码][代码] [代码][代码]c: [代码][代码]'ApiIndex'[代码][代码],[代码][代码] [代码][代码]a: [代码][代码]'share_shop'[代码][代码],[代码][代码] [代码][代码]shop_id: shop_id,[代码][代码] [代码][代码]encryptedData: encryptedData,[代码][代码] [代码][代码]iv: iv,[代码][代码] [代码][代码]session_key: session_key,[代码][代码] [代码][代码]token: token[代码][代码] [代码][代码]};[代码][代码] [代码][代码]util.ajax(post_data, [代码][代码]function[代码] [代码](data) {[代码][代码] [代码][代码]wx.removeStorageSync([代码][代码]'shareTicket'[代码][代码]);[代码][代码] [代码][代码]console.log(data);[代码][代码] [代码][代码]}, [代码][代码]function[代码] [代码](data) {[代码][代码] [代码][代码]wx.login({[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](lres) {[代码][代码] [代码][代码]if[代码] [代码](lres.code) {[代码][代码] [代码][代码]post_data = {[代码][代码] [代码][代码]m: [代码][代码]'mall'[代码][代码],[代码][代码] [代码][代码]c: [代码][代码]'ApiLogin'[代码][代码],[代码][代码] [代码][代码]a: [代码][代码]'get_session'[代码][代码],[代码][代码] [代码][代码]code: lres.code,[代码][代码] [代码][代码]};[代码][代码] [代码][代码]util.ajax(post_data, [代码][代码]function[代码] [代码](data) {[代码][代码] [代码][代码]wx.setStorageSync([代码][代码]'session_key'[代码][代码], data.data);[代码][代码] [代码][代码]post_data = {[代码][代码] [代码][代码]m: [代码][代码]'Share'[代码][代码],[代码][代码] [代码][代码]c: [代码][代码]'ApiIndex'[代码][代码],[代码][代码] [代码][代码]a: [代码][代码]'share_shop'[代码][代码],[代码][代码] [代码][代码]shop_id: shop_id,[代码][代码] [代码][代码]encryptedData: encryptedData,[代码][代码] [代码][代码]iv: iv,[代码][代码] [代码][代码]session_key: data.data,[代码][代码] [代码][代码]token: token[代码][代码] [代码][代码]};[代码][代码] [代码][代码]util.ajax(post_data, [代码][代码]function[代码] [代码](data) {[代码][代码] [代码][代码]console.log([代码][代码]'第二次成功'[代码][代码]);[代码][代码] [代码][代码]wx.removeStorageSync([代码][代码]'shareTicket'[代码][代码]);[代码][代码] [代码][代码]}, [代码][代码]function[代码] [代码](data) {[代码][代码] [代码][代码]console.log([代码][代码]'第二次失败'[代码][代码]);[代码][代码] [代码][代码]}, [代码][代码]true[代码][代码]);[代码][代码] [代码][代码]}, [代码][代码]null[代码][代码], [代码][代码]true[代码][代码]);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]}[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}, [代码][代码]true[代码][代码]);[代码][代码] [代码][代码]},[代码]
2018-07-12es6 支持的,外部库需要适配,比如axios中你需要使用的wx的api来集成(一般没有人使用这些)。 小程序本身就是一套UI框架,可使用组件就在你发布的链接中。 不支持,参考2 后端无所谓,小程序就是一套前端框架,你集成自己的服务端api即可。(服务端与小程序本身没有关系)
关于小程序支持的开发语言和库大家好! 新手求教: 1,小程序UI前端支持javascript的版本是什么?最低到多少。被支持版本的javascript的标准库都支持吗?允许添加外部库吗?比如axios 。 2,小程序UI前端支持完整的html5吗?还是只支持有限的在下面官方文档中列出的组件? https://developers.weixin.qq.com/miniprogram/dev/component/ 3,小程序UI前端支持Angular (MVC)框架吗? 4,微信小程序的后端服务器开发是否不限制框架,Angular ,spring什么都可以? 请大家指教!谢谢!
2018-07-12需要在 [代码]config[代码] 的[代码]window[代码]选项中开启 [代码]enablePullDownRefresh[代码]。 https://developers.weixin.qq.com/miniprogram/dev/api/pulldown.html#onpulldownrefresh
下拉刷新onPullDownRefresh为什么触发不了该函数执行,在ios中能行的通,是不是少配置了东西,是不是只能页面滚动的情况才能出发该函数,为什么在苹果机中,页面也没有滚动,也能触发该函数。
2018-07-12是的,必须走button
授权按钮看了官方 文档 现在对微信对小程序的授权 都是手动的吗 需要通过button 的形式 去处理吗 小白
2018-07-11cover flow,要完全差不多的,需要自己实现,swiper我没有做出来。 不过swiper通过css是可以实现类似于下面的效果。 再通过animation 的 skew 来变换左右平滑的效果。 好处是只做css动画,简单。 视频截图,瞎眼见谅 [图片]
求这样一个轮播,求大神给个demo[图片] 求这样一个轮播,求大神给个demo
2018-06-22[代码]data: {[代码][代码] [代码][代码]rehandshake: [代码][代码]true[代码][代码]}[代码] [代码]wx.previewImage({[代码][代码] [代码][代码]...[代码][代码] [代码][代码]success: [代码][代码]function[代码][代码](){[代码][代码] [代码][代码]this[代码][代码].rehandshake = [代码][代码]null[代码][代码] [代码][代码]}[代码][代码]})[代码] [代码]onShow(){[代码][代码] [代码][代码]if[代码][代码]([代码][代码]this[代码][代码].rehandshake){[代码][代码] [代码][代码]this[代码][代码].rehandshake()[代码][代码] [代码][代码]}[代码][代码]}[代码]这样应该可以解决吧,还是好奇,为什么onShow会重新握手🤔
预览wx.previewImage websocket会建立新的连接在 文本socket 获取到的图片想放大 预览wx.previewImage websocket会关闭 原有的 建立新的websocket连接 <image mode="aspectFill" style="width: 300rpx;" bindtap="imagepreview" data-src="{{item.contentImgUrl}}" wx:if="{{item.contentImgUrl}}" src="{{item.contentImgUrl}}" /> imagepreview(e) { wx.previewImage({ current: e.currentTarget.dataset.src, urls: [e.currentTarget.dataset.src] }) } [图片]
2018-06-22emmmmmm... 必须备案,因为你的用户主要是国内的用户
海外空间和服务器问题- 一直用的海外空间,在互联网访问时不需要备案,想用来做小程序数据接口,但是在提交审核时提示必须备案 - 海外服务器也一定要备案吗,但是与自身现有的服务器和域名冲突了,能否不备案呢
2018-06-22参考文档的src说明。 https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html
web-view 的src可以为微信的授权链接吗web-view 的src可以为微信的授权链接吗
2018-06-22只有10层哦,你可以已经查看你的getCurrentPages(),来看看整个navigate中的记录
wx.navigateTo 连续跳转相同页面不同参数,出现无法跳转下一页的情况- 当前 Bug 的表现(可附上截图) 在同一个页面,连续使用 wx.navigateTo 跳转相同页面url,不同参数的情况下,出现停留一段时间后,再次点击下一页,执行wx.navigateTo没有反应的情况,进入fail回调,错误信息是:navigateTo:fail webview count limit exceed - 预期表现 - 复现路径 - 提供一个最简复现 Demo
2018-06-22web-view中,我之前遇到的问题是 [代码]<[代码][代码]a[代码] [代码]href[代码][代码]=[代码][代码]"#"[代码] [代码]onclick[代码][代码]=[代码][代码]"goHome"[代码] [代码]>go Home</[代码][代码]a[代码][代码]>[代码]这样点击左上角返回需要点两次,因为href的原因(以前不写href会报warning)。 后来改成 href="javascript: goHome()"就OK了。 另外如果后退应该是调用wx.miniProgram.navigateBack吧。
web-view在ios跳转页面之后,点击返回不刷新界面怎么办web-view在ios跳转页面之后,点击返回不刷新界面怎么办, 我添加一个iframe之后,在ios上调用window.history.back();还是当前页再点击调用window.history.back();才返回,难道添加一个iframe也添加了一个history?
2018-06-22