解决微擎的人人商城用户反复授权不成功问题

问题:在微擎的人人商城的小程序里面,会出现用户反复授权不成功的情况

分析:授权的流程是,一个未进入过小程序界面的用户进入界面后,wx.getUserinfo会获取用户的openid创建一个用户,并且存在cache里面,然后再点进入这个会员中心界面,会判断你的这个用户是无效的,然后进入授权界面,授权界面授权后,在进入首页,首页再会调用wxapp.auth这个api接口去修改这个openid的会员昵称,图片等信息

关键点:后台数据库中,shop_member表中,存在一部分为sns_wa_sns_wa_xxxxx这一类的openid,这一类的openid是错误的,导致这一部分用户就一直重复在首页更新数据更新不了,进入用户后,再授权,授权进入首页还是没法更新 这样一种死循环的情况

注意:如果你的数据库中不存在sns_wa_sns_wa_xxx之类的前缀重复openid的话,那么跟下面的解决方案没得太大关系.

死循环的原因:用户进入小程序首页授权后,创建了一个sns_wa_xxx的openid并且存入了缓存,然后再一次进入首页的时候,会触发check()方法,check方法会把这个sns_wa_xxx再加上sns_wa前缀,组成了sns_wa_sns_wa_xxx的openid来查询,查询不到,然后后面又会触发什么auth方法验证,然后就导致了一系列的错误.

解决关键点:

addons\ewei_shopv2\plugin\app\core\mobile\wxapp.php(这个是小程序调用的方法API后台接口) 在这个里面有两个function,一个是auth()->更新和创建用户的方法,另一个是check()->检查会员数据有效性的方法

auth()方法排除重复的sns_wa前缀

解决微擎的人人商城用户反复授权不成功问题

check()方法排除重复的sns_wa前缀

解决微擎的人人商城用户反复授权不成功问题

//更新:

//注:小程序中pages/messages/auth/index.js 这个是用户的授权js

//注:如果对于js比较熟悉的话,可以直接修改小程序的授权页面,用授权页面获取到用户的openid,nickename之类的信息后,然后写一个API接口来验证你的信息是否注册,注册过就不管,把个人昵称和头像更新一下. 
修改这个pages/messages/auth/index.js

var t = getApp();var e = require("../../../utils/core.js");//先加载require.js组件//修改bind 方法 在bind中如果获取到了用户信息,就直接传参到借口bind: function() {var t = this, e = setInterval(function() {
wx.getSetting({success: function(n) {var a = n.authSetting["scope.userInfo"];//微信调用用户信息的api接口wx.getUserInfo({success:function(info){var userinfo=info.userInfo;//console.log(userinfo);var params={data: userinfo,iv: info.iv,
};//调用下面的js方法var res_code=update_info(params);//方法成功,回到用户界面if(res_code==1){
wx.navigateTo({url: 'pages/member/index/index',
})
}


}
});//这里的update_info的js方法 作用是获取到了用户信息后,调用PHP的api接口,传递用户参数,然后php获取用户参数后根据openid更新member表的用户信息function update_info(params){
e.get("wxapp/update_info",params,function(res){return res.code;
})
}

//相关的PHP后台接口方法(文件地址:addons\ewei_shopv2\plugin\app\core\mobile\wxapp.php  接口调用时就用wxapp/update_info)

// 微信小程序更新个人信息(头像,昵称,等等)
  public function update_info(){global $_GPC;global $_W;
$openid=$_GPC['openid'];
$data = $_GPC["data"];
$return_data=array();

$member=m('member')->getMember($openid);if($member['nickname']===$data['nickName']){
$return_data=array("code"=>1,"msg"=>"数据一样,无需修改");
app_json($return_data,$member['openid']);
}//如果存在用户信息不为空,且得到的用户信息和数据库信息不匹配,进行更新if(!empty($member)&&strlen($data['avatarUrl'])>1&&$data['nickName']!==$member['nickname']){
$updateData = array('nickname' =>$data['nickName'],'avatar' =>$data['avatarUrl'],'gender'=>$data['gender']
);
pdo_update('ewei_shop_member', $updateData, array('id' => $member['id'], 'uniacid' => $member['uniacid']));
$data['id'] = $member['id'];
$data['uniacid'] = $member['uniacid'];

$return_data=array("code"=>1,"msg"=>"修改成功");
}else{
$return_data=array("code"=>0,"msg"=>"无数据或者其他错误,修改失败");
}

 

注:有些朋友问页面弹框出现了check sign fail怎么办,但凡是进入页面后弹微信自带的那种提示框,一般都是配置问题,请检查你的config文件中的什么appid,appsecret之类的,跟业务代码没得太大关系,不知道怎么办把错误黏贴拿去百度.

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!443252835@qq.com
2. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!
3. 如果你也有好源码或者教程,可以到直接会员中心发布,分享有会员购买会会有收入!可提现!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!如果连基本小程序安装不会的先买站内的小程序安装教程看完再买源码!
5. 如有链接无法下载、失效或广告,请联系管理员QQ处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站不保证所提供下载的资源的准确性、安全性和完整性,源码仅供下载学习之用!没人能保证程序没有bug,如果您觉着花几块钱享受正版一样服务!请您远离本站!源码具备可复制性,开口闭口退款的谢绝资助购买!
8. 如用于商业或者非法用途,与本站无关,一切后果请用户自负!
9. 如遇到加密压缩包,默认解压密码为"dghoyo.com",如遇到无法解压的请联系管理员!

动能源码站由众多网友分享:php源码,商业源码,wp主题,人人商城,破解模块,商业插件,微信小程序,小程序源码,微信小程序源码,织梦模板,微信营销源码,破解软件的工具等资源!
动能源码 » 解决微擎的人人商城用户反复授权不成功问题

发表评论

提供最优质的电商培训资源集合

立即查看 了解详情