微信小程序 授权登录 PHP

.wxml 中

 <button bindtap="getUserProfile"> 获取头像昵称 </button>

.js中

getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认
    // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        console.log(res);
        let nick_name = res.userInfo.nickName;
        let avatar_url = res.userInfo.avatarUrl;
        wx.login({
           //获取code 来与服务器交换 获取openid
          success(ret){
            console.log(ret)
            let code = ret.code;
            wx.request({
              url: 'http://www.month.skill.com/api/login',
              method:"POST",
              data:{
                code:code,
                nick_name:nick_name,
                avatar_url:avatar_url
              },
              success(e){
                console.log(e)
                //将用户信息保存到缓存里面
                wx.setStorageSync('user', e.data.data)
              },
              fail(res){
                wx.showToast({
                  title: '请求失败',
                  icon:'error'
                })
              }
            })
          }
        })
      },
      fail(res){
        wx.showToast({
          title: '授权失败',
          icon:"error"
        })
      }
    })
  }

php中

public function login()
    {
        //接收参数
        $code = input('code');
        $nickName = input('nick_name');
        $avatarUrl = input('avatar_url');
        //验证参数
        if (empty($code) || empty($nickName) || empty($avatarUrl)){
            return json(['status'=>500,'msg'=>'参数不能为空']);
        }
        //自己到微信公众平台获取
        $appid = '自己到微信公众平台获取';
        $secret = '自己到微信公众平台获取';
        //获取openid
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code";
        $userInfo = json_decode(file_get_contents($url),true);
        $userInfo['nick_name'] = $nickName;
        $userInfo['avatar_url'] = $avatarUrl;
        //根据获取的openid 来查看数据库 有的话更新 session_key 没有的话添加
        $model = new Users();
        $data = $model->where('openid',$userInfo['openid'])->find();
        if ($data){
            //存在数据 更新
            $model->where('openid',$userInfo['openid'])->update(['session_key'=>$userInfo['session_key']]);
            //获取用户id
            $userInfo['user_id'] = $data['id'];
        }else{
            //不存在将用户信息添加入库 获取自增的id
            $userInfo['user_id'] = $model->insertGetId($userInfo);
        }
        return json(['status'=>500,'msg'=>'success','data'=>$userInfo]);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值