//小程序一键登录
public function wechat()
{
$code = $this->request->post('code'); //前端获取传过来的code
if (!$code){
return $this->err('缺少参数');
}
//获取秘钥key
if ($res = Db::table('***')->where([***])->find()){
if ($info = $this->wechatGet($res['appid'],$res['secret'],$code)){
$arr = array(
'phone'=>$info['phoneNumber'],
'name'=>$info['phoneNumber'],
'image'=>'https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132'
);
if ($log = $this->login($arr)){
return $this->succ('登录成功',$log);
}
}
}
return $this->err('登录失败');
}
public function login($data = [])
{
if (empty($data)){
return false;
}
个人的登录操作
}
//封装调用
//小程序登录
protected function wechatGet($appid,$secret,$code){
$url = 'https://api.weixin.qq.com/cgi-bin/token';
$data = array(
'grant_type'=>'client_credential',
'appid'=>$appid,
'secret'=>$secret
);
$ch = curl_init();
// 构建查询字符串
$queryString = http_build_query($data);
$fullUrl = $url. '?'. $queryString;
curl_setopt($ch, CURLOPT_URL, $fullUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_errno($ch)) {
return false;
}
curl_close($ch);
$access_token = json_decode($response,true)['access_token'];
return $this->wechatPost($access_token,$code);
}
protected function wechatPost($access_token,$code){
$ch = curl_init();
$url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=$access_token";
$data = ['code'=>$code];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
if (curl_errno($ch)) {
return false;
}
curl_close($ch);
//验证是否成功
$info = json_decode($response,true);
if ($info['errcode'] !== 0){
return false;
}
return $info['phone_info'];
}