微信小程序登录PHP服务端处理
微信小程序登录
纯新手向的傻瓜式操作指南
微信开发文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/
登录凭证校验api: https://api.weixin.qq.com/sns/jscode2session
这个api的作用简单的手就是通过code获取到用户的唯一标识openid 前台无法获取到用户唯一标识
不多bb直接上代码
class Wxapi extends Base{
protected $appid = '';//小程序appid
protected $secret = '';//小程序秘钥 appSecret
protected $code2Session = 'https://api.weixin.qq.com/sns/jscode2session';//官方接口
public function Wxlgoin(){
//api参数获取
$code = $this->request->param('code');
//有的时候小程序需要显示其他用户的头像昵称之类的,让前端获取比较方便
//可以让他把头像和昵称传入存储到数据库中
//$nickname = $this->request->param('nickname');
//$face = $this->request->param('face');
if(empty($code)){
return $this->ajaxError('参数缺失');
}
$url = $this->code2Session.'?';
//接口请求参数
$array = [
'appid'=>$this->appid,
'secret'=>$this->secret,
'js_code'=>$code,//前端提交的code
'grant_type'=>'authorization_code'//这个东西官方文档有说明自己去看为什么
];
foreach($array as $key=>$vals){
$url .=$key.'='.$vals.'&';
}
$str = json_decode(file_get_contents($url));
$arr = get_object_vars($str);
if($arr['errcode'] == 0){
//成功 对数据库进行操作 在模型内判断是登录还是注册
$user = userModel::wxlogin($arr['openid']);//,$nickname,$face
if($user['code']){
return $this->ajaxSuccess($user['msg']);
}
return $this->ajaxError[$user['error']];
}
//返回错误信息
return $this->ajaxError($arr);
}
}