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'=>"授权失败"]);
}
|