小程序静默登录

后端接口

    /**
     * 静默登录
     */
    public function login()
    {
        $code = \request()->get('code');
        $appid = 'wx45551aa1550b8b4d';
        $secret = '240b8106dd9022fd6dd36822e8531870';
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
        $data = json_decode(file_get_contents($url,true),true);
//            dd($url);
        $openid = $data['openid'];
        $user = LoginModel::where('openid',$openid)->first();
        if($user){
            LoginModel::where('openid',$openid)->update(['session_key'=>$data['session_key']]);
        }else{
            LoginModel::insert([
                'session_key'=>$data['session_key'],
                'openid'=>$data['openid']
            ]);
        }
        $id = $user['id'];
        if (!$id){
            return json_encode(['code'=>2001,'msg'=>'用户不存在','data'=>'']);
        }
        $token = jwtServices::get_token($id);
        return json_encode(['code'=>200,'msg'=>'已完成静默登录','data'=>$token]);
    }

小程序端/app.js

    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        var code = res.code;
        // console.log(code)
        wx.request({
          url: 'http://www.exam.com/index.php/api/login',
          data:{
            code:code
          },
          success:function(res){
            console.log(res.data.data)
            var token = (res.data.data);
            wx.setStorageSync('token', token)
          }
        })
      }
    })
  },

猜你喜欢

转载自blog.csdn.net/QiZong__BK/article/details/126153517