html
<button open-type="getUserInfo" bindtap="login">微信一键登录</button>
JS
login(){ wx.getUserProfile({ desc: 'desc', success:e=>{ let wx_name = e.userInfo.nickName let wx_photo = e.userInfo.avatarUrl wx.login({ success:d=>{ let code = d.code wx.request({ url: 'http://zy.com/index.php/api/wx_login', method:"POST", data:{code,wx_name,wx_photo}, success:res=>{ if(res.data.code==200){ wx.setStorageSync('token', res.data.token) wx.navigateTo({ url: '/pages/index/index' }) return false } wx.showToast({ title: res.data.msg, icon:"error" }) } }) } }) }, fail:e=>{ wx.showToast({ title: "已拒绝", }) } }) },
PHP
public function wx_login(request $request){ $wx_name = $request['wx_name']; $wx_photo = $request['wx_photo']; $code = $request['code']; $appid = config('wx.appid'); $key = config('wx.key'); $url = "https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$key."&js_code=".$code."&grant_type=authorization_code"; $wxInfo = file_get_contents($url,true); $wxInfo = json_decode($wxInfo,true); $openid = $wxInfo['openid']; $session_key = $wxInfo['session_key']; $select = WxUsers::where('openid','=',$openid)->first(); if($select){ $select->session_key = $session_key; $select->wx_name = $wx_name; $select->wx_photo = $wx_photo; $request = $select->save(); $token = base64_encode($openid); if($request) return json_encode(['code'=>200,'msg'=>"登录成功",'token'=>$token]); return json_encode(['code'=>400,'msg'=>"登录失败"]); } $data = [ 'openid'=>$openid, 'session_key'=>$session_key, 'wx_name' => $wx_name, 'wx_photo'=>$wx_name ]; $create = WxUsers::insert($data); $token = base64_encode($openid); if($create) return json_encode(['code'=>200,'msg'=>"授权成功",'token'=>$token]); return json_encode(['code'=>400,'msg'=>"授权失败"]); }