我也遇到了,坐等答案
使用云开发图片超过一定的数量,就只会显示第一张,请问怎么解决这个问题
2020-05-19解决了吗,我也遇到了,本地调试可以识别,发布生产环境就不行了
通过web-view跳转的H5页面中怎么是识别二维码?识别的二维码不是本小程序的二维码,是个人二维码
2020-03-31package com.macro.mall.util; import com.alibaba.fastjson.JSONObject; import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.AlgorithmParameters; import java.security.Key; import java.security.Security; /** * 微信解密算法 * https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#%E5%8A%A0%E5%AF%86%E6%95%B0%E6%8D%AE%E8%A7%A3%E5%AF%86%E7%AE%97%E6%B3%95 * @author Song * @create 2020-03-03 10:58 */ public class WXBizDataCryptUtil { // 算法名 public static final String KEY_NAME = "AES"; // 加解密算法/模式/填充方式 // ECB模式只用密钥即可对数据进行加密解密,CBC模式需要添加一个iv public static final String CIPHER_ALGORITHM = "AES/CBC/PKCS7Padding"; /** * 1.对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。 * 2.对称解密的目标密文为 Base64_Decode(encryptedData)。 * 3.对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是16字节。 * 4.对称解密算法初始向量 为Base64_Decode(iv),其中iv由数据接口返回。 * * @param encryptedData * @param iv * @param sessionKey * @return */ public static JSONObject wxDecrypt(String encryptedData, String iv, String sessionKey){ String json = null; byte[] encrypted64 = Base64.decodeBase64(encryptedData); byte[] key64 = Base64.decodeBase64(sessionKey); byte[] iv64 = Base64.decodeBase64(iv); try { init(); json = new String(decrypt(encrypted64, key64, generateIV(iv64))); System.out.println(json); } catch (Exception e) { System.out.println("解密微信失败:" + e.getMessage()); } return JSONObject.parseObject(json); } /** * 初始化密钥 */ public static void init() throws Exception { Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); KeyGenerator.getInstance(KEY_NAME).init(128); } /** * 生成iv */ public static AlgorithmParameters generateIV(byte[] iv) throws Exception { // iv 为一个 16 字节的数组,这里采用和 iOS 端一样的构造方法,数据全为0 // Arrays.fill(iv, (byte) 0x00); AlgorithmParameters params = AlgorithmParameters.getInstance(KEY_NAME); params.init(new IvParameterSpec(iv)); return params; } /** * 生成解密 */ public static byte[] decrypt(byte[] encryptedData, byte[] keyBytes, AlgorithmParameters iv) throws Exception { Key key = new SecretKeySpec(keyBytes, KEY_NAME); Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); // 设置为解密模式 cipher.init(Cipher.DECRYPT_MODE, key, iv); return cipher.doFinal(encryptedData); } }
为什么在解密userinfo的时候会有部分乱码?最近需要获取用户的unionid,就从getuserinfo接口去解密encryptedData,但是解密出来的字符串有部分乱码,用户信息是正确的,unionid也是正确的,watermark也对,就是openid是乱码的,我也是比对了之前获取到的openid之后才看出来这个是openid的,不知道大家有没有遇到过这种问题。 encryptedData:Q/4uaGK0CvLzgLbTGRRLEIGyyUOLOpirR7WFqQN4uytif2DwSLbfmrh3c+tM1x+XWaL7b3J++Jzf4MVWoOKJJtOZoM5svsIPbD3lk+5E5QXFvMnLzxyBzdH0LM207R00/+Pc+CWbjglxr7Li3osOetlw1QMW6LkiWta6fIqFbwqyMmugYHfEyBdXke7Wyim8OVG2oMghehhzIFn/oBXCDGb6Eh/r3QZoiBcTsKrJ7cRMiObcxbJj11t+j2xWO/CWRukbDagLhTEurEuz6nWwBaYQNlYObAg2/zsYtHNeDOzo5G+etkBIGHeO9FJaj/nXPP9Szvo2tVowXMTfxC4TbwIN1oclRalFhd6S1SROh5cQLYcAH2O0vPefT7L54r7QlQHFiw6U2QVaJs5WLyARmX1MERs6T/ScI+05xDQT2XGB8I0XNdPnfq5nvAwo0E1i1jqO8t5QPwTpct89odVbpFh61p6LIWkGZPEcHkhuFMmvIospjT6Z7kXZeAienpR3EFRZ1F2anCCqazDG3YP3aQ== iv:p66r+AVpi5ad2nCRV3kdAA== sessionkey:p66r+AVpi5ad2nCRV3kdAA== appid:wxced7e28049a9178f 之前获取login接口获取的openid为 oKyDs4smEWoNDnwrBO-ONIONwxEA 解密后的数据如下: MW��ͅ��������4smEWoNDnwrBO-ONIONwxEA","nickName":"Song","gender":1,"language":"zh_CN","city":"杭州","province":"浙江","country":"中国","avatarUrl":"https://wx.qlogo.cn/mmopen/vi_32/PiajxSqBRaEJudLUiaaZjjlFwJibhcyEHsG96a9jGf7xV3dfJKp7FXAHkguhvLTfNWia00FXqhbdeZxIX3E16gPGibQ/132","unionId":"oN-wmxLXfXSwewwyxzvdnk_DBlVE","watermark":{"timestamp":1583293045,"appid":"wxced7e28049a9178f"}} 就前面部分是乱码,但是破坏了整个json字符串。。。
2020-03-04抱歉我不是云开发,都是把用户数据存到自己数据库的
无法正常获取userinfo根据官方文档,使用button引导用户点击“授权登陆”,代码如下 [代码]bindGetUserInfo: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]if[代码] [代码](e.detail.userInfo) {[代码][代码] [代码][代码]//用户按了允许授权按钮[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]//跳转至实际页面[代码][代码] [代码][代码]wx.getUserInfo({[代码][代码] [代码][代码]success(res){[代码][代码] [代码][代码]console.log(res.userInfo)[代码][代码] [代码][代码]app.globalData.userInfo = res.userInfo;[代码][代码] [代码][代码]wx.redirectTo({[代码][代码] [代码][代码]url: [代码][代码]'../index/index'[代码][代码],[代码][代码] [代码][代码]})[代码][代码] [代码][代码]} [代码][代码] [代码][代码]})[代码][代码] [代码][代码]//授权成功后,通过改变 isHide 的值,让实现页面显示出来,把授权页面隐藏起来[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]isHide: [代码][代码]false[代码][代码] [代码][代码]});[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]//用户按了拒绝按钮[代码][代码] [代码][代码]wx.showModal({[代码][代码] [代码][代码]title: [代码][代码]'警告'[代码][代码],[代码][代码] [代码][代码]content: [代码][代码]'您点击了拒绝授权,将无法进入小程序,请授权之后再进入!!!'[代码][代码],[代码][代码] [代码][代码]showCancel: [代码][代码]false[代码][代码],[代码][代码] [代码][代码]confirmText: [代码][代码]'返回授权'[代码][代码],[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]// 用户没有授权成功,不需要改变 isHide 的值[代码][代码] [代码][代码]if[代码] [代码](res.confirm) {[代码][代码] [代码][代码]console.log([代码][代码]'用户点击了“返回授权”'[代码][代码]);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码]本地测试没有任何问题,但是在实际发布之后,有半数的用户在点击了授权按钮之后,也正常跳转至index页面,但是微信的云开发控制台中的用户管理看到的登陆用户是未授权状态,如下图: [图片] 同样,在数据库内,也无法记录到用户的userinfo。 麻烦各位可以指点一下么?
2020-03-04有啊,我解出来部分乱码,无法格式化json,真是蛋疼
微信小程序获取用户信息的时候解密出来的数据会有一定几率的乱码有人遇到在小程序获取到用户的信息时候,将encryptedData和iv传给后端,后端再去解密的时候会有一定的几率出现乱码的情况,大家又遇到这种情况吗?最后是怎么解决的?
2020-03-04不要说修改mp-dialog组件样式之类的, 因为别的地方有调用是需要下面的按钮的
weui的mp-dialog组件使用的时候下面的按钮可以去掉吗?weui的mp-dialog组件, 我不想用它自带的button, 不赋值的时候, 弹窗下面按钮还是留了位置, 不知道怎么去掉. 如图, 我需要自定义样式的按钮就行了, 不用想自带的. [图片]
2020-01-10