class QyWechatController extends Controller
{
public $agentid;
public $corpId;
public $secret;
public function __construct()
{
$this->agentid = 'xxx';
$this->corpId = 'xxx';
$this->secret = 'xxx';
}
public function index()
{
$code = request()->get('code');
if ($code) {
//获取用户信息
$user_ticket = $this->getUserTicket($code, $this->getAccessToken());
$user_info = $this->getUserInfo($user_ticket, $this->getAccessToken());
//更新获取的最新信息到用户表
}
return redirect(request()->url());
}
/**
* 获取access_token
*
* @return mixed
*/
private function getAccessToken()
{
//从redis中获取有效的access_token
$access_token = Cache::get('access_token');
if ($access_token) return $access_token;
$curl = Curl::to('https://qyapi.weixin.qq.com/cgi-bin/gettoken')
->withData(['corpId' => $this->corpId, 'corpsecret'=> $this->secret])
->get();
$curl = json_decode($curl, true);
//重新设置缓存,有效期120分钟
Cache::put('access_token', $curl['access_token'], 120);
return $curl['access_token'];
}
/**
* 获取用户信息
*
* @param $code
* @param $access_token
* @return mixed
*/
private function getUserTicket($code, $access_token)
{
$user = Curl::to('https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo')
->withData(['access_token' => $access_token, 'code' => $code])
->get();
$user = json_decode($user, true);
return $user['user_ticket'];
}
/**
* 获取用户详情
*
* @param $user_ticket
* @param $access_token
* @return mixed
*/
private function getUserInfo($user_ticket, $access_token)
{
$user_detail = Curl::to('https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail?access_token='.$access_token)
->withData(['user_ticket' => $user_ticket])
->asJson()
->post();
//转换对象到需要用的数组
$data = [
'nickname' => $user_detail->userid,
'truename' => $user_detail->name,
'avatar' => $user_detail->avatar,
];
//存入用户信息到session
session(['userid' => $user_detail->userid]);
session(['name' => $user_detail->name]);
session(['avatar' => $user_detail->avatar]);
return $data;
}
}
laravel下实现微信企业号网页授权
最新推荐文章于 2023-05-19 08:24:29 发布