收藏
回答

急!!!!想问下关于解密用户信息的问题,求大佬解答!!!

查了一下,getuserinfo获取到的加密信息解密时会有几率失败,请问各位大佬有没有什么好的解决方法!!!!!!急!!!!!!!!!!!!!!!!

回答关注问题邀请回答
收藏

3 个回答

  • 2018-10-13

    这个问题我已经彻底解决了,其实方案很简单,换一下思路就好了!

    在按钮的getuserinfo事件中首先判断是否选择同意,代码如下:

    const eUserRes = e && e.detail

    if (!eUserRes.iv || !eUserRes.encryptedData) {

        return

    }

    这里会直接判断是否同意授权,如果选择拒绝,程序就不会再往下走了

    接下来调用login和useinfo:

            try {

                wx.login({

                    success: function (login) {

                        wx.getUserInfo({

                            success: function (userRes) {

                                const params = {

                                    js_code: login.code,

                                    encrypted_data: userRes.encryptedData,

                                    iv: userRes.iv

                                }

                            // 业务自己的登录逻辑在这儿写

                            }

                        })

                    }

                })

            } catch (error) {

              console.log('登录失败')

            }

    这么做百分百不会再有失败的情况了,希望能帮到大家

    2018-10-13
    有用
    回复
  • 啦啦啦
    啦啦啦
    2018-09-10

    我现在是这样处理的,当解密失败的时候再去调用自身,结果就是无限的失败.... 请问下有没有什么办法能够解决


    2018-09-10
    有用
    回复 6
    • 🚗🚕🚙🚌🚎🚒🚐🚚
      🚗🚕🚙🚌🚎🚒🚐🚚
      2018-09-10

      你这样处理肯定不行啊,事件对象e永远都是错误的那次,既然是几率失败,可能是解密失败吧,code和e.detail一起生成的,你获取了e.detai后,又调用了一次login来获取code,这不有可能刷新登录态,code和e.detail对应不上,要么点击按钮前提前调用code,要么在login回掉里,再调用一下,wx.getUserInfo,来获取新的加密数据(虽然不太合理,相当于微信多请求一次,不过好用,不必判断授权不授权什么的)

      2018-09-10
      回复
    • 啦啦啦
      啦啦啦
      2018-09-10回复🚗🚕🚙🚌🚎🚒🚐🚚

      多谢多谢,那也就是说我需要在bindgetuserinfo回调中调用login,然后在login的回调中在调用一边bindgetuserinfo? 不是说wx.getUserInfo已经快要废弃了嘛 , 怎么能不通过按钮来直接获取到用户信息呢

      2018-09-10
      回复
    • 啦啦啦
      啦啦啦
      2018-09-10回复🚗🚕🚙🚌🚎🚒🚐🚚

       我现在是点击允许授权后触发,先拿到e.detail,然后再拿到code去换 ,但是我看文档中,之前的wx.getUserInfo是必须是要先login,wx.getUserInfo才能拿到私密信息的,有点懵.....

      2018-09-10
      回复
    • 🚗🚕🚙🚌🚎🚒🚐🚚
      🚗🚕🚙🚌🚎🚒🚐🚚
      2018-09-10回复啦啦啦

      你点击按钮,肯定就授权了,授权后,wx.getUserInfo就可以用了,至于是不是废弃不晓得,不过准确的说,是不弹窗了,而你不需要wx.getUserInfo弹窗,因为点击动作恰恰已经调起了授权窗,这样使用虽然不符合官方初衷,但官方初衷就是个坑https://developers.weixin.qq.com/community/develop/doc/0006026b3c83c0e244573a0025bc08

      2018-09-10
      回复
    • 🚗🚕🚙🚌🚎🚒🚐🚚
      🚗🚕🚙🚌🚎🚒🚐🚚
      2018-09-10

      就是说还是最简单的login+wx.getUserInfo,只不过利用了一次登录按钮弹出的授权窗而已,而不使用e.detail里的数据

      2018-09-10
      回复
    查看更多(1)
  • 🚗🚕🚙🚌🚎🚒🚐🚚
    🚗🚕🚙🚌🚎🚒🚐🚚
    2018-09-10
     问得不明不白 https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
    2018-09-10
    有用
    回复
登录 后发表内容