一、首次登陆下叫程序获取用户openid不准确问题
如第一次获取sns_wa
第二次获取sns_wa_sns_wa
等这些空数据 ,使用户进入会员中心也重复验证 还是无法或许信息,只能关闭重新打开小程序才可以
- 文件路径:..\addons\ewei_shopv2\plugin\app\core\mobile\wxapp.php
修复代码如下:
- function check()
- //修改如下 判断多增加两个条件 openid赋值时也判断下前缀是否重复
- if( empty($openid) || $openid == ‘sns_wa_’ || $openid == ‘sns_wa_sns_wa_’)
- {
- app_error(AppError::$ParamsError);
- }
- if(strpos($openid,‘sns_wa_’)!==false){
- $wxopenid = $openid;
- }else{
- $wxopenid = “sns_wa_” . $openid;
- }
解决思路大概就是获取空openid时返回错误信息 让小程序前端重新获取用户信息,然后传入sns_wa_开头的openid时将重复头部去除来获取正常的openid进行查询,避免重复插入sns_wa_及sns_wa_sns_wa_,也避免重复获取该无用户的用户数据
二、自动授权弹出废除后导致重复授权的解决方法
原理:微信小程序更新后,只有第一次打开页面时调用app.js里的onLaunch方法,解决方法就是用户获取用户信息后再次调用改方法
> bindgetuserinfo
> 用户点击该按钮时,会返回获取到的用户信息,回调的detail数据与wx.getUserInfo返回的一致 open-type=”getUserInfo”
> 基础库1.3.0
WXML
//授权按钮增加获取用户信息方法同意`
JS
- var i = getApp();
- bindGetUserInfo:function(e){
- i.onLaunch()
- },
三、因二中重复获取用户信息,ios可能存在打开分享页面丢失上级参数mid的问题(无法绑定上级关系)
原理: 在首次调用login的时候把mid存在了全局变量$_W里,在分销方法中判断:如果全局变量$_W的mid存在,而$_GPC的mid不存在,则让$mid=$_W里的mid。
路径1:addonsewei_shopv2pluginappcoremobilewxapp.php
方法名:login()
- if($_GPC[‘mid’]){
- $_W[‘up_mid’] = intval($_GPC[‘mid’]);
- }
路径2:addonsewei_shopv2plugincommissioncoremodel.php
方法名:checkAgent()
- $parent = false;
- $mid = intval($_GPC[‘mid’]);
- if (empty($mid) && $_W[‘up_mid’]>0){
- $mid = $_W[‘up_mid’];
- }
- if (!(empty($mid)))
- {
- $parent = m(‘member’)->getMember($mid);
- }
