修复人人商城小程序用户登录灰头像无昵称

2023年5月4日08:28:39 发表评论
微信搜一搜 ts小陈

微信小程序2021年4月13日调整回收wx.getUserInfo接口可获取用户授权的个人信息能力

调整后4月13日之后发布的小程序wx.getUserInfo的接口都将失效,因此导致小程序的登录会出现灰色头像和微信用户,后台也是获取不到数据。

已经失效了需要“「头像昵称填写能力」支持获取用户头像昵称”

简单修复方法

先用getUserProfile获取 userInfo用户对象信息,在用wx.getUserInfo 获取encryptedData和iv 至此后面的登录流程不变只是提交数据的时候多提交一个userInfo信息到后台,操作如下:

1、登录页面修改

小程序路径pages/auth/index.wxml

  1. <image class='logo' src='{{shop_logo}}'></image>
  2. <view class='title'><text class='title-underline'>{{shop_name}}</text></view>
  3. <view class='message'><text>您尚未登录需要获取您的授权后进入商城</text></view><button bindtap='close'
  4.   class='cancelBtn'>暂不登录</button>
  5.   <button bindtap='bindGetUserInfobu' class='authBtn' >立即登录</button>

小程序登录方法多加了一个方法bindGetUserInfobu()  然后获取到userInfo用户对象信息在用wx.getUserInfo,提交时多提交一个userInfo用户对象信息。

2、登录页面js修改

小程序路径pages/auth/index.js

   标颜色的为新增代码   

  1. // 修复登录  
  2.  bindGetUserInfobu(){  
  3.    //getUserProfile获取用户信息  
  4.   wx.getUserProfile({  
  5.    lang:'zh_CN',  
  6.    desc: '用于完善会员资料',  
  7.    success: (res) =>{  
  8.      console.log(res)  
  9.      //getUserInfo获取认证oid解密  
  10.      wx.getUserInfo({  
  11.        lang: 'zh_CN',  
  12.      }).then(r=>{  
  13.        console.log(r)  
  14.       r.userInfo=res.userInfo  
  15.        let n={  
  16.          detail:r  
  17.         }  
  18.         this.bindGetUserInfo(n)  
  19.      })  
  20.    }  
  21.   })  
  22.  },  
  23. // 修复登录
  24.    bindGetUserInfo: function(n) {
  25.        wx.showLoading({
  26.            title: "加载中"
  27.        }), wx.login({
  28.            success: function(i) {
  29.                console.log([ 1, i ]), o.post("wxapp/login", {
  30.                    code: i.code
  31.                }, function(i) {
  32.                    console.log([ 2, i ]), i.error ? o.alert("获取用户登录态失败:" + i.message) : o.get("wxapp/auth", {
  33.                        data: n.detail.encryptedData,
  34.                        iv: n.detail.iv,
  35.                        sessionKey: i.session_key,
  36.                        userInfo:n.detail.userInfo   // 修复登录
  37.                    }, function(s) {
  38.                        console.log([ 3, s ]), 1 == s.isblack && wx.showModal({
  39.                            title: "无法访问",
  40.                            content: "您在商城的黑名单中,无权访问!",
  41.                            success: function(o) {
  42.                                o.confirm && e.close(), o.cancel && e.close();
  43.                            }
  44.                        }), n.detail.userInfo.openid = s.openId, n.detail.userInfo.id = s.id, n.detail.userInfo.uniacid = s.uniacid;
  45.                        var t = e.setCache("userinfo", n.detail.userInfo), a = e.setCache("userinfo_openid", n.detail.userInfo.openid), c = e.setCache("userinfo_id", s.id);
  46.                        console.log(e.getCache("userinfo")), console.log(e.getCache("userinfo_openid")),
  47.                        console.log(e.getCache("userinfo_id"));
  48.                        var l = e.setCache("login_session_key", i.session_key);
  49.                        0 != t && 0 != a && 0 != c && 0 != l || o.alert("获取用户信息失败!"), console.log(e.getCache("login_session_key")),
  50.                        e.getSet(), e.scanCarts(), wx.navigateBack({
  51.                            changed: !0
  52.                        });
  53.                    });
  54.                });
  55.            },
  56.            fail: function() {
  57.                o.alert("获取用户信息失败!");
  58.            },
  59.            complete: function() {
  60.                wx.hideLoading();
  61.            }
  62.        });
  63.    },

3、后台代码修改

后台代码 ewei_shopv2/plugin/app/core/mobile/wxapp.php

只修改public function auth()处代码即可

  1. /**
  2.      * 微信小程序登录
  3.      */
  4.     public function auth()
  5.     {
  6.         global $_GPC;
  7.         global $_W;
  8.         $encryptedData = trim($_GPC["data"]);
  9.         $iv = trim($_GPC["iv"]);
  10.         $sessionKey = trim($_GPC["sessionKey"]);
  11.        //修复登录  
  12.         $userInfo=$_GPC["userInfo"];  
  13.       //修复登录
  14.         if (empty($encryptedData) || empty($iv)) {
  15.             return app_error(AppError::$ParamsError);
  16.         }
  17.         $pc = new WXBizDataCrypt($this->appid, $sessionKey);
  18.         $errCode = $pc->decryptData($encryptedData, $iv, $data);
  19.         if ($errCode == 0) {
  20.             $data = json_decode($data, true);
  21.             $this->refine($data["openId"]);
  22.             $mmember = m("member")->getMember("sns_wa_" . $data["openId"]);
  23.             //登录修正  
  24.             if(is_array($userInfo)){  
  25.                 $data=array_merge($data, $userInfo);  
  26.             }  
  27.             //登录修正 
  28.             if (empty($member)) {
  29.                 $member = array("uniacid" => $_W["uniacid"], "uid" => 0, "openid" => "sns_wa_" . $data["openId"], "nickname"=>!empty($data["nickName"]) ? $data["nickName"] : "", "avatar" => !empty($data["avatarUrl"]) ? $data["avatarUrl"] : "", "gender" => !empty($data["gender"]) ? $data["gender"] : "-1", "openid_wa" => $data["openId"], "comefrom" => "sns_wa", "createtime" => time(), "status" => 0);
  30.                 pdo_insert("ewei_shop_member", $member);
  31.                 $id = pdo_insertid();
  32.                 $data["id"] = $id;
  33.                 $data["uniacid"] = $_W["uniacid"];
  34.                 if (method_exists(m("member"), "memberRadisCountDelete")) {
  35.                     m("member")->memberRadisCountDelete();
  36.                 }
  37.             } else {
  38.                 $updateData = array("nickname" => !empty($data["nickName"]) ? $data["nickName"] : "", "avatar" => !empty($data["avatarUrl"]) ? $data["avatarUrl"] : "", "gender" => !empty($data["gender"]) ? $data["gender"] : "-1");
  39.                 pdo_update("ewei_shop_member", $updateData, array("id" => $member["id"], "uniacid" => $member["uniacid"]));
  40.                 $data["id"] = $member["id"];
  41.                 $data["uniacid"] = $member["uniacid"];
  42.                 $data["isblack"] = $member["isblack"];
  43.             }
  44.             if (p("commission")) {
  45.                 p("commission")->checkAgent($member["openid"]);
  46.             }
  47.             return app_json($data, $data["openId"]);
  48.         }
  49.         return app_error(AppError::$WxAppError, "登录错误, 错误代码: " . $errCode);
  50.     }

ok,修复完成重新编译下是不是可以获取用户信息了。

修复人人商城小程序用户登录灰头像无昵称

以上三个文件下载:

https://cjw41415.lanzouf.com/iiXqc0umm9nc

密码:1iyr

 

 

 

小陈号卡
ts小陈

发表评论(不允许含有网址!)

:?: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :cry: :mrgreen: :neutral: :razz:

已登录用户不需要填写以下内容