php 小程序获取用户信息

  小程序获取用户信息,首先获取openid 和session_key来标识用户,获取这两个数需要前端传一个code。微信公众号开发的时候,这个code可以自己生成,但是小程序开发的时候不可以。

  小程序的用户信息,是可以直接传输到后端的,现在最新版本的需要用户授权,授权之后前端穿头像,昵称,性别等入库即可),由于小程序不是在浏览器里打开的,没法用cookie,所以也没法用session,它的每次请求都要经过微信服务器中转。所以传输sessionid是获取不到session的,要想实现登陆功能,需要把session的信息存到redis等缓存之中,设置保存时间。也可以写死(安全系数低),会这样就不用每次登陆了,如果要登陆,也可以加个login_log表,然后根据create_time设置登陆过期时间,也就是一个 伪装的登陆。

session_start();
if(empty($_SESSION['openid'])){
  $data = array(
  'appid'=>$this->appid,
  'secret'=>$this->AppSecret,
  'js_code'=>$_POST['code'],
  'grant_type'=>'authorization_code',
);
$appid = $this->appid;
$secret = $this->AppSecret;
$code = trim($_POST['code']);
//获取openid
$url = 'https://api.weixin.qq.com/sns/jscode2session?appid=wx96fad81880c36&secret=dff3ab417538e67943cb109ef9c9e&js_code='.$code.'&grant_type=authorization_code';
$res = httprequest($url);
//用户openid跟session_key
$r = json_decode($res,true);
if(empty($r['openid'])){
  $msg['status'] = 'error';
  $msg['msg'] = '获取openid错误';
  echo json_encode($msg);exit();
}

//获取是否有上级id 分享id
$pid = (int)$_POST['share_user'];
//获取是否有渠道id
$channel = $_POST['channel'];


//获取用户微信信息,包括昵称,头像等等
$u = $_POST['data'];
$user = json_decode($u,true);
$data = array(
  'mobile'=>'',//手机为空
  'password'=>'',//密码为空
  'openid'=>$r['openid'],//用户唯一标识
  'nickname'=>isset($user['nickName'])?$user['nickname']:'',//昵称
  'header'=>isset($user['avatarUrl'])?$user['avatarUrl']:'',//用户头像
  'gender'=>isset($user['gender'])?$user['gender']:0,//用户性别,1男2女
);
//保存openid
$_SESSION['openid'] = $r['openid'];
//根据openid去查询用户表
$userinfo = $this->USER->getRow('*',array('openid'=>$r['openid']));
if(empty($userinfo)){
  //如果是增加的时候,多加几条信息
  $data['create_time'] = time();
  $data['channel_id'] = $channel_id;
  $data['pid'] = $pid;
  $data['share_num'] = 0;
  $data['status'] = 1;
  //如果没有信息,则录入信息
  $this->USER->add($data);
}else{
  //如果有信息,则更新
  $this->USER->update($data,array('openid'=>$r['openid']));
}

//token 是另外开启一个会话

//由于sessionid每次请求都会变,所以换成opeid
  $msg['status'] = 'success';
  $msg['data']['token'] = $r['openid'];
  echo json_encode($msg);exit();
}

转载于:https://www.cnblogs.com/ayanboke/p/9405733.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值