/**
* 微信授权登录
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function wxlogin()
{
//接收参数
$code = $this->request->post('code'); //code码
//验证参数
if (empty($code)){
$this->error('参数不能为空');
}
//自己到微信公众平台获取
$appid = $this->appid;
$secret = $this->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);
if (empty($userInfo['openid']))
$this->error('注册失败');
//根据获取的openid 来查看数据库 有的话更新 session_key 没有的话添加
$user = \app\common\model\User::where('openid',$userInfo['openid'])->find();
if ($user){
$ret = $this->auth->direct($user['id']);
}else {
//获取access_token
$mobile = $this->request->post('mobile'); //获取手机号
$data = [
'openid' => $userInfo['openid'],
];
$ret = $this->auth->register($mobile, Random::alnum(), '', $mobile, $data);
}
if ($ret) {
$info = $this->auth->getUserinfo();
$data = ['userinfo' => $info];
$this->success(__('Logged in successful'), $data);
} else {
$this->error($this->auth->getError());
}
}
PHP微信小程序授权登录 fastadmin可直接使用 需要在user表里增加openid字段 手机号如果不需要的话可以隐藏掉,更改里面的配置即可