- 下载文件
我在小程序里需要下载一个bin文件,地址是https://voice.deepwiser.com/ota/ccs64n.bin,我配置了域名https://voice.deepwiser.com,下载时一直失败,报错{errno: 600002, errMsg: "downloadFile:fail url not in domain list"},这是什么原因 ?
2023-04-19 - wx.closeBLEConnection() ->返回成功 ->安卓可以断开连接 ios无法断开
// 断开设备连接 closeConnect(deviceId) { var that = this; if (deviceId) { wx.closeBLEConnection({ deviceId: deviceId, //有值的 success: function (res) { console.log('设备连接已断开~') }, fail(res) { } }) } else { that.closeBluetoothAdapter() } }, 如上标题所述,wx.closeBLEConnection() ->返回成功 ->安卓可以断开连接 ios无法断开 当我执行完蓝牙传输的最后一步时,想要关闭当前蓝牙设备连接,调用了该接口,接口返回成功,但是设备手环并未关闭当前蓝牙连接 [图片] 随后我便使用 wx.closeBluetoothAdapter(Object object) // 关闭蓝牙模块 closeBluetoothAdapter() { wx.closeBluetoothAdapter({ success: function (res) { console.log('关闭蓝牙模块成功~') }, fail: function (err) { } }) }, [图片] 设备也还是没有断开连接(我用了官方的案例也是同样的结果) 后来我换安卓机器测试,是可以成功断开设备连接的
2019-12-20 - wx.getMenuButtonBoundingClientRect()获取的属性,top值不准确
[图片][图片][图片] 测试屏幕参数iphone6/7/8,在默认模式下,获取screenHeight为667px,windowHeight为603px,statusBarHeight为20px,计算顶部导航栏高度为44px,(44-32(胶囊高度))/2 = 6px (即胶囊距离状态栏底部的距离), 但是wx.getMenuButtonBoundingClientRect()获取的top值t为24px,24-20(状态栏高度) = 4px (即胶囊距离状态栏底部的距离) 真机和编辑器都出现问题 安卓 ios 都有 计算差值对应不起来
2021-10-14 - 小程序客服有信息推送客服延迟、信息重复、消息记录丢失、客服小助手主信息和聊天界面信息不一致
1、在客服小助手中在为用户解答疑问时,有消息重复的情况。 [图片] 2、客服小助手中和用户交流的信息有丢失的情况 3、客服小助手主界面信息和聊天界面信息不一致(主界面有心“电图消息”,聊天界面则没有没有,大概一个小时后消息显示正常) [图片][图片] 4、用户发送的消息有延时的情况(将近一小时) 并没有开启消息推送,望官方能答复 [图片]
2020-02-21 - 微信开放平台 用户微信登录失败 invalid credential
微信开放平台 开发 的小程序 需要 微信登录 获取 session_key 和 openId ; 按照 官方开发文档API 先获取 Component_Verify_Ticket (微信平台每隔十分钟推送一次) 已经 存贮完毕 通过 Component_Verify_Ticket 获取 api_component_token 1,获取第三方平台access_token http请求方式: POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/component/api_component_token POST数据示例: [代码]{ "component_appid":"appid_value" , "component_appsecret": "appsecret_value", "component_verify_ticket": "ticket_value" } [代码] 请求参数说明参数说明component_appid第三方平台appidcomponent_appsecret第三方平台appsecretcomponent_verify_ticket微信后台推送的ticket,此ticket会定时推送,具体请见本页末尾的推送说明 这个也获取到了 并且 可以保证 整个系统中 只有一个地方调用这个接口 , 而且是最新的 没有失效。。。 然后开始 code 换取 session_key 第三方平台开发者的服务器使用登录凭证 code 以及第三方平台的component_access_token 获取 session_key 和 openid。其中 session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输。 请求方式: https://api.weixin.qq.com/sns/component/jscode2session?appid=APPID&js_code=JSCODE&grant_type=authorization_code&component_appid=COMPONENT_APPID&component_access_token=ACCESS_TOKEN 参数说明: 参数是否必须说明appid是小程序的AppID js_code是登录时获取的 codegrant_type是填authorization_codecomponent_appid是第三方平台appidcomponent_access_token是第三方平台的component_access_token 但是 获取Session_key以及OpenId 的 时候 却一直 报错 {"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest, hints: [ req_id: MNHl9a0063th42 ]"} 这个问题怎么解决?难道 还需要别的证书 或者授权什么的吗???? 求解答 在线等 急急急!!!
2018-01-31 - button=bindgetuserinfo的点击与wx.login先后顺序
之前通过 `wx.getUserInfo()` 获取用户信息时,它有个前提条件要求先 `wx.login()` 而且未过期。现在换成通过按钮触发的形式后,是在哪一个阶段获取授权code呢?是在点击按钮之前就要获取到code?还是在bindgetuserinfo的回调函数内部获取code? 在bindgetuserinfo的回调函数内部获取的code,会不会是无效的? 以为部分JS源码(mpvue): [代码] [代码][代码]export [代码][代码]default[代码] [代码]{[代码] [代码] [代码][代码]methods: {[代码] [代码] [代码][代码]async onGetUserInfo (res) { [代码][代码]// bindgetuserinfo的回调函数[代码] [代码] [代码][代码]const that = [代码][代码]this[代码] [代码] [代码][代码]const { userInfo, errMsg, encryptedData, iv } = res.target[代码] [代码] [代码][代码]if[代码] [代码](errMsg === [代码][代码]'getUserInfo:ok'[代码][代码]) {[代码] [代码] [代码][代码]wx.login({[代码] [代码] [代码][代码]success (loginRet) {[代码] [代码] [代码][代码]if[代码] [代码](loginRet[[代码][代码]'code'[代码][代码]]) {[代码] [代码] [代码][代码]that.loginAfter({[代码] [代码] [代码][代码]userInfo,[代码] [代码] [代码][代码]encryptedData,[代码] [代码] [代码][代码]iv,[代码] [代码] [代码][代码]code: loginRet[[代码][代码]'code'[代码][代码]][代码] [代码] [代码][代码]})[代码] [代码] [代码][代码]}[代码] [代码] [代码][代码]},[代码] [代码] [代码][代码]complete (loginRet) {[代码] [代码] [代码][代码]if[代码] [代码](!loginRet[[代码][代码]'code'[代码][代码]]) {[代码] [代码] [代码][代码]wx.showModal({ title: [代码][代码]'授权失败'[代码] [代码]})[代码] [代码] [代码][代码]}[代码] [代码] [代码][代码]}[代码] [代码] [代码][代码]})[代码] [代码] [代码][代码]}[代码] [代码] [代码][代码]},[代码] [代码] [代码][代码]loginAfter ({ userInfo, encryptedData, iv, code }) {[代码] [代码] [代码][代码]// 服务端通过 code 获取 session_key 再解密 decrypted 获取 openid unionid[代码] [代码] [代码][代码]}[代码] [代码] [代码][代码]}[代码] [代码] [代码][代码]}[代码] [代码]</script>[代码] ============================ 补充,问题已经解决了,下面是一些心得: 在做小程序授权登录时, 不同的人有不同的实现细节, 导致有各种不一致的描述, 与他人进行沟通讨论的时候, 思想很难保持同步。 ### 微信官网登录时序图示例 ![](https://images2018.cnblogs.com/blog/1303135/201809/1303135-20180906120150079-810857681.png) ### `wx.login()`会刷新 session_key 吗 ![](https://images2018.cnblogs.com/blog/1303135/201809/1303135-20180906211103650-366063863.png) 下面是我连续3次测试的结果, 可以看出三个不同的 code 得到相同 session_key: ``` | code | session_key | | - | - | | 061AlTTl1NN1Xk0ZmcUl1iZ0Ul1AlTTi | eTVWziFnhu2vG+iVrjDOqA== | 071Rl0SD0Dd7Sc2hkkOD0asORD0Rl0SW | eTVWziFnhu2vG+iVrjDOqA== | 071wl53j2qtQCH0SfKZi2SVN2j2wl53d | eTVWziFnhu2vG+iVrjDOqA== ``` 我决定等待10分钟之后再去尝试: ``` code_xxx LMiKHyNLaGHidXqSsg4Ung== ``` 果然 session_key 发生了变化,这和[官网文档说明](https://developers.weixin.qq.com/miniprogram/dev/api/signature.html#wxchecksessionobject)符合: > 原文:微信不会把session_key的有效期告知开发者。我们会根据用户使用小程序的行为对session_key进行续期。用户越频繁使用小程序,session_key有效期越长。 ### 数据签名校验? ![](https://images2018.cnblogs.com/blog/1303135/201809/1303135-20180906213036296-17637551.png) 签名算法 `signature = sha1( rawData + session_key )` ,意味着两个参数都相同,或者两个参数都不同,其签名才可能一致。所有我一个大胆的尝试,如果我更改我的性别或者昵称,那么前端得到的rawData 也会发生变更,session_key 也会发生变更,才能通过签名验证。可惜的是我更改了我的用户信息之后,通过调试发现 rawData 并没有立即发生变更。 ### 我个人当前的做法 每次涉及到解密用户信息时,前端都会重新回去授权 code ,服务端使用 code 获取 session_key,然后再解密。 虽然微信小程序官网有说明 code 的有效期为5分钟,经过测试发现不止5分钟(我发现10分钟也没过期)。但是为了避免 code 过期,还是要注意相关的逻辑。 ### 总结 希望上面的几个比较重要的点能够帮助你,同时希望你留言一起讨论大家的实现区别,谢谢您的阅读!
2018-09-27 - 微信登录授权偶尔出现第一次解密失败,第二次解密成功,报错为pad block
- 当前 问题 的表现(可附上截图) 目前出现了用户偶尔授权登录会解密失败,但是重新登录授权的时候又成功了,参数是session_key两次相同,但是iv不同. 登录流程为: 用户进入小程序,前端调用wx.login() 获取code,传给开发者服务器,开发者服务器通过jscode2session拿到session_key 和用户openId,在没有调用需要的逻辑业务之前,不需要做授权弹框处理.开发者服务器将session_key返回给了前端,前端自己进行缓存. 在需要做逻辑业务时,前端调用checkSession检查之前缓存的session_key是否有效,如果有效就直接调用getUserInfo接口获取用户加密参数.然后将session_key和用户加密字符串传给开发者服务器,开发者服务器进行解密,解密时会出现pad block corrupted 错误.如果session_key被checkSession检查出无效.再次调用wx.login获取code,重新拿到session_key进行上一步的循坏.. 首先想咨询下各位大佬 该流程是否会有问题.并且在检查session_key有效后,依旧会出现解密报错 下面是解密代码和调用过程 [图片] [图片]该处红色框内就是报错行,下图就是报错代码 [图片] - 预期表现 偶然事件,不知道怎么复现, 在社区中查看了多个相同问题的提问,但是没有得到有效的方法解决. 当前流程只是被要求 需要保留一些未授权人员的阅读记录.所以流程才写成了两步. 请各位大佬多多指点,谢谢
2018-12-25 - 手机更新微信7.0后无法获取全局变量
- 当前 Bug 的表现(可附上截图) 使用模拟器可以获取app.globalData里的全局变量 然后用小米8se(更新微信7.0)真机测试,获取到的值为null 使用iPhone7 真机测试却可以获取到 不知是否为Android机器通病 请协助排查 感谢 小米8se调试截图[图片] 模拟器截图[图片] - 预期表现 - 复现路径 - 提供一个最简复现 Demo
2019-01-03 - 【问题反馈】开发者工具无法正确显示地图marker、control
公司名称 街电MP帐号(邮箱) yunful@jumei.com 开发者微信号 superkler机型(如iPhone 6s plus) 开发者工具版本:v1.01.1712150 操作系统(如iOS 9.3) mac os 10.13是否必现 是出现时间 最近一个月操作路径(即如何操作可以复现该问题) 使用开发者工具打开一个带地图组件的小程序页面、在地图组件上面设置marker , 使用下载网络图片到本地后(wx.downloadFile,wx.saveFile) 将获得的本地图片地址 作为marker 的 iconPath 显示到地图上,此时地图上不会显示该图片,显示的为一个默认图片。 地图上control 也存在同样的问题,显示为一个透明带边框的图片 真机测试无该问题 问题描述(具体问题介绍) 使用网络图片下载到本地后作为地图marker的iconPath 工具上无法正确显示、使用了网络图片下载到本地后作为地图control 的iconPath 也无法正确显示 问题截图(客户端问题界面截图) [图片] 真机显示正常 [图片] 代码片段截图
2017-12-26