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

分析:授权的流程是,一个未进入过小程序界面的用户进入界面后,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之类的,跟业务代码没得太大关系,不知道怎么办把错误黏贴拿去百度.

人人商城小程序 java版_人人商城小程序用户授权问题相关推荐

  1. 简易贪吃蛇小游戏java版_用GUI实现java版贪吃蛇小游戏

    本文实例为大家分享了java版贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 项目结构 新建一个JFrame窗口,作为程序入口 public class GameStart{ public stat ...

  2. java订单号 github_GitHub - github2zhang/J12306: 12306抢票程序JAVA版

    J12306抢票助手 12306抢票程序JAVA版,自动登录-验证-查票-购票/自动候补.只需简单的配置即可运行进行快捷抢票. 使用说明 引入jar依赖 手动添加项目lib文件夹中的依赖包 配置文件c ...

  3. 视频教程-企业微信支付JAVA版_向员工收款-微信开发

    企业微信支付JAVA版_向员工收款 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信息 ...

  4. Java版的双色球买彩票程序

    Java版的双色球买彩票程序 package HelloWord;import java.util.Scanner;import java.util.Random;//双色球游戏public clas ...

  5. 微信小程序 java 传值_微信小程序传值获取值的实例方法

    微信小程序传值以及获取值方法的详解 微信小程序传值以及获取值方法,传值有两种方法,对应也有获取值得方法, 1.设置id的方法标识跳转后传递的参数值: 2.通过使用data - xxxx 的方法来标识要 ...

  6. 来电通java版_终于有人把Java程序员必学知识点整理出来了,令人有如醍醐灌顶...

    JVM 无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎.不管是工作还是面试中,JVM都是必考题.如果不懂JVM的话,薪酬会非常吃亏(近70%的面试者挂在JVM上了) 详细介绍了JVM有关于 ...

  7. 快手小店电脑版_微信PC版更新!支持在小程序中使用微信支付 | 一周资讯

    小程序1. 微信PC版更新,支持在小程序中使用微信支付.12月19日,微信PC端推出内测版2.7.2.73,新版本支持以下新功能:新增看一看精选内容,新的订阅号浏览体验,支持在小程序中使用微信支付.( ...

  8. 医疗小程序源码_不懂商城小程序源码,如何快速创建小程序商城?

    小程序在近来发展十分迅速,从微信小程序游戏出发,到现在渗透到各种功能类型,甚至已经扩展到了其他的应用程序上.那么如今很多的小程序商城应该怎么创建呢?不懂商城小程序源码也可以自己制作吗?当然可以,下面小 ...

  9. 小程序制作预算_科普:小程序制作一个需要多少钱?

    微信小程序越来越火,越来越多的企业/商家利用微信小程序来宣传自家的产品.但是他们都有一个共同点,虽然想做一个小程序,但是又担心没有充足的资金,耗费成本太高,可能会划不来.接下来三鸣就跟大家科普下制作一 ...

  10. [开源]java版QQ机器人集成小黄鸡功能

    项目采用开源程序IQQ.内置webQQ协议.并且使用十分方便.直接调用即可.      项目采用webService接口调用可以不用重新登录QQ即可实现项目的修改.测试期间 多次登录QQ导致QQ被检测 ...

最新文章

  1. 《Verilog HDL那些事儿》PDF 3.0版本发布
  2. sql 拼接int类型的字段_一套简单实用的SQL脚本(下篇)
  3. 深度探索C++ 对象模型(5)-Initialization list(1)
  4. 苏宁物流研发中心运输产品线产品总监钟翼翔:IOT技术的应用分析
  5. LeetCode - 141. 环形链表
  6. Hadoop数据目录迁移
  7. 竞选计算机协会网络部部长,计算机协会部长竞选演讲稿
  8. 2020华为软件精英挑战赛热身赛总结篇
  9. 三菱PLC水处理程序加触摸屏程序 三菱PLC水处理程序加触摸屏程序
  10. Metric模块源码解析
  11. Aho-Corasic多模匹配算法的学习、理解和应用(Python环境下)
  12. 基于jsp+mysql+Spring+SpringMVC+mybatis的大学生缴费系统
  13. Word Embedding与Word2Vec
  14. 【实现】树莓派开机自动向微信发消息报告ip地址(无第三方代理)
  15. SQL Server 数据库之常量
  16. HFM深入技术学习系列之二--规则
  17. C#使用EmguCV库(图像读取、显示、保存)(二)
  18. A2DP音频流在安卓系统中的实现
  19. Android从零开始:Google Play服务
  20. java 读取dwg_jdwglib java dwg文件的读取,写入开发包. dwg使用当前 常方便,测试代码和jar都有 CAD 247万源代码下载- www.pudn.com...

热门文章

  1. 按键精灵通过句柄获取窗口坐标_按键精灵 句柄 获得句柄 控制windows窗口 后台...
  2. cad画多段线时不显示轨迹_CAD画的线段显示不出来的解决方法
  3. [第八章] 深入理解计算机系统第三版 家庭作业参考答案
  4. AD域权限分配_ADManager Plus对AD域管理有哪些帮助作用?
  5. C++ Primer Plus 第六版课后习题答案(第五章)
  6. 520用Java制作一个表白app
  7. 实验吧CTF web刷题
  8. STC单片机 Keil4安装, 第一个程序
  9. 高德地图API总结--地图加载、权限,定位
  10. 计算机考研培训中公,计算机408