uniapp前端代码:
appLoginWx(){ // #ifdef MP-WEIXIN var domain = this.domain; uni.getProvider({ service: 'oauth', success: function (res) { if (~res.provider.indexOf('weixin')) { uni.login({ provider: 'weixin', success: (res2) => { uni.getUserInfo({ provider: 'weixin', success: (info) => {//这里请求接口 console.log(res2); console.log(info); var pid = uni.getStorageSync('clienid') ? uni.getStorageSync('clienid') : 0; uni.request({ url: 'https://'+domain+'/api/checklogin', //仅为示例,并非真实接口地址。 data: { code: res2['code'], pid: pid, info: info.rawData }, header: { 'content-type': 'application/json' // 默认值 }, success: (res3) => { console.log(res3.data); if(res3.data.status==1){ var userinfo = JSON.stringify(res3.data['info']); uni.setStorageSync('userinfo', userinfo); uni.setStorageSync('session_key',res3.data.session_key); uni.setStorageSync('openid',res3.data.openid); uni.showToast({ title: '登录成功!', duration: 2000, icon: 'success', complete: function(){ setTimeout(function(){ uni.reLaunch({ url: '/pages/user/user' }); },2000) } }); }else{ //登录失败 wx.showModal({ title: '登录提示', content: '登录失败!', showCancel: false }); } } }); }, fail: () => { uni.showToast({title:"微信登录授权失败",icon:"none"}); } }) }, fail: () => { uni.showToast({title:"微信登录授权失败",icon:"none"}); } }) }else{ uni.showToast({ title: '请先安装微信或升级版本', icon:"none" }); } } }); //#endif }
PHP端代码:
function checklogin(){ //$postStr = file_get_contents('php://input'); // $params = json_decode($postStr,1); $params=$this->frparam(); $appid = $this->webconf['wxappid']; $secret = $this->webconf['wxsecret']; $url="https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$secret."&js_code=".$params['code']."&grant_type=authorization_code"; $data=$this->doCurl($url); $info = json_decode($params['info'],1); //注册用户信息 if($data['openid']){ $member = M('member')->find(['openid'=>$data['openid']]); if(!$member){ $w['openid'] = $data['openid']; $w['litpic'] = $info['avatarUrl']; $w['city'] = $info['city']; $w['username'] = $info['nickName']; $w['province'] = $info['province']; $w['pid'] = $info['pid']; $r = M('member')->add($w); $info['id'] = $r; $info['username'] = $params['nickName']; $info['sfz'] = ''; $info['truename'] = ''; $info['card'] = ''; $info['bank'] = ''; }else{ unset($member['pass']); $info = $member; } } JsonReturn(['status'=>1,'openid'=>$data['openid'],'info'=>$info,'session_key'=>$data['session_key']]); } public function doCurl($url) { $curl = curl_init(); // 使用curl_setopt()设置要获取的URL地址 curl_setopt($curl, CURLOPT_URL, $url); // 设置是否输出header curl_setopt($curl, CURLOPT_HEADER, false); // 设置是否输出结果 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 设置是否检查服务器端的证书 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 使用curl_exec()将CURL返回的结果转换成正常数据并保存到一个变量 $data = curl_exec($curl); // 使用 curl_close() 关闭CURL会话 curl_close($curl); return json_decode($data,1); }
版权声明:本文发布于与老涂一起写代码 内容均来源于互联网 如有侵权联系删除
快来评论,快来抢沙发吧~