微信小程序session_key、encryptedData、iv进行解密获取用户头像名称

这篇具有很好参考价值的文章主要介绍了微信小程序session_key、encryptedData、iv进行解密获取用户头像名称。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    public function register(){
        $data['openid'] = input('openid','');
        //解密用户信息
        $userData = $this->getSessionKey();
        if($userData){
            $data['nickname'] = $userData['nickName'];
            $data['head'] = $userData['avatarUrl'];
        }
        $data['token'] = getRandChar(32);
        $data['token_time'] = time();
        $id = Db::name('store_member')->strict(false)->insertGetId($data);
        if($id){
            $user = Db::name('store_member')->where('id', $id)->find();
            return json_encode(['code'=>200, 'msg'=>'注册成功', 'data'=>$user]);
        }else{
            return json_encode(['code'=>400, 'msg'=>'注册失败']);
        }
    }
    
    //获取session_key
    public function getSessionKey(){
        $url = 'https://api.weixin.qq.com/sns/jscode2session';
        $data = array(
            'appid' =>$this->wxpay['appid'],
            'secret' => $this->wxpay['secret'],
            'js_code' => input('js_code',''),
            'grant_type' => 'authorization_code'
        );
        $res = httpRequest($url, 'POST', $data);
        $session_key = json_decode($res,true);
        if(!empty($session_key['session_key'])){
            $encryptedData = str_replace(' ', '+', input('encryptedData'));
            $iv = str_replace(' ', '+', input('iv'));
            $aesKey = base64_decode($session_key['session_key']);
            $aesIV = base64_decode($iv);
            $aesCipher = base64_decode($encryptedData);
            $result = openssl_decrypt($aesCipher, 'AES-128-CBC', $aesKey, 1, $aesIV);
            return json_decode($result,true);
        }else{
            return false;
        }
    }

小程序端

      login: function (e) {
        var that = this;
        wx.login({
          success: function (res_) {
            that.setData({
              session: res_.code,
            })
          }
        })
        wx.getUserProfile({
          desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
          success: (res) => {
            var url = 'User/getUser'
            var params = { 
              js_code: that.data.session, 
              openid: app.globalData.openid,
              iv: res.iv,
              encryptedData: res.encryptedData,
              // 修正
              // nickname: e.detail.userInfo.nickName,
              // head: e.detail.userInfo.avatarUrl
            }
            util.wxRequest(url, params, data => {
              if (data.code == 200) {
                app.globalData.userInfo = data.data
                app.globalData.login = true
                this.setData({ login:true })
                wx.showToast({
                  title: '登录成功',
                  icon: 'success',
                  duration: 2000
                })
              } else {
                //错误,需用户重新授权登录
                app.globalData.login = false
                wx.showToast({
                  title: data.msg,
                  icon: 'none',
                  duration: 2000
                })
              }
            }, data => { }, data => { })
          }
        })
      },

以上代码大致流程为:

1.在小程序界面点击按钮发送js_code与encryptedData和iv到自己的服务器

2.服务器接收到js_code后配合appid与secret共同调用微信接口获取session_key与openid

3.使用获取到的encryptedData与iv以及获取到的session_key进行解密,将返回的数据转化为数组,提取其中的nickName与avatarUrl

4.连接服务器,将openid,nickName,avatarUrl,存入数据库之中文章来源地址https://www.toymoban.com/news/detail-509931.html

到了这里,关于微信小程序session_key、encryptedData、iv进行解密获取用户头像名称的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序解密encryptedData 报错:pad block corrupted 解决方法

    今天碰到一个pad block corrupted错误,跟代码发现是Cipher里面的doFinal()爆出的错。 代码: 错误: 找到微信官方社区,才发现这是微信的一个bug。现在有没有解决不清楚,但是我们自己可以解决。 原因 :wx.login获取session_key,而sessionKey又是解密encryptedData的密钥,所以一旦我们的

    2024年02月12日
    浏览(66)
  • 微信小程序解密encryptedData报错:pad block corrupted 解决方法

    今天碰到一个pad block corrupted错误,跟代码发现是Cipher里面的doFinal()爆出的错。 代码: 错误: 找到微信官方社区,才发现这是微信的一个bug。现在有没有解决不清楚,但是我们自己可以解决。 原因:wx.login获取session_key,而sessionKey又是解密encryptedData的密钥,所以一旦我们的

    2024年02月11日
    浏览(45)
  • 微信小程序获取文件session会话无效

    微信小程序获取图片文件时session会话失效,可以将图片文件地址请求修改为post请求,返回文件流以base64编码输出。 具体请求方式如下:

    2024年02月15日
    浏览(30)
  • 微信小程序-key的用法

    在微信小程序中,key是用于标识列表中每个项目的唯一标识符。当使用wx:for指令渲染列表时,可以使用key属性来指定每个项目的key值。这有助于提高列表渲染的性能,并确保在列表中添加或删除项目时,只更新必要的项目。 wxml: js: 操作前: 操作后: 说明:被选中的checkbox出

    2024年02月05日
    浏览(76)
  • 微信小程序学习笔记——WX:key的使用

    wx:key一般是用在wx:for或者其他需要动态渲染的地方,采用wx:key可以对渲染列表中的元素给定唯一标识,使当我们的数组发生改变时,渲染中的原数据可以保持自己的特性。 举个例子,现在有个点击按钮勾选的例子,当我们勾选羔羊排骨一条,点击增加数据后,羔羊排骨左侧的

    2024年02月07日
    浏览(42)
  • 微信小程序wx:for 的使用以及wx:key绑定

    wx:for基本使用 wx:for-item和wx:for-index重新命名item和index wx:key两种绑定方式以及注意事项 wx:for基本使用 业务层数据 视图层 wx:for遍历时候每一项名称为 item 每一项索引名称为 index wx:for-item和wx:for-index实现item和index重命名 wx:for-item=\\\"str\\\" 将原来名称 item 修改成 str wx:for-index=\\\"i 将原来

    2024年02月11日
    浏览(79)
  • 微信小程序申请腾讯地图key(腾讯位置服务API)简要流程

    微信小程序使用腾讯地图完整流程 前往 腾讯位置服务官网 点击右上角 注册/登录 后 点击 控制台   应用管理 - 我的应用 - 创建应用 - 添加key 创建应用时信息随便填就行 Key名称 随便填一个 WebServiceAPI 要 勾选 域名白名单 ,否则一些功能会用不了(比如路线规划插件) ser

    2024年02月16日
    浏览(73)
  • 【微信小程序】-- WXML 模板语法 - 列表渲染 -- wx:for & wx:key(十二)

    💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘   大家好,又见面了,

    2024年02月12日
    浏览(43)
  • Django后台和微信小程序之间使用session方法,出现小程序访问404,Django后台找不到指定的URL问题解决

    在Django后台开启session中间件,小程序端请求Django后台的session属性,在Django中执行session会话操作,并响应应答给小程序,在小程序端执行cookie的缓存和读取操作。 在上述的功能完成后,小程序端访问时出现404错误,Django后台找不到指定的URL路径。 1、排查Django后台的URL路径是

    2024年02月06日
    浏览(47)
  • uniapp实现小程序登录,微信一键登录,获取token,iv,code,ncryptedData

    首先布局登录按钮(触发登录的一定要是button,button才有获取用户的方法) 2.写点击button之后的逻辑,,获取iv,code,ncryptedData,调用后端接口进行登录

    2024年02月13日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包