关于使用 code 获取微信用户信息的疑问
try {
if ($code = $request->code) {
$response = $driver->getAccessTokenResponse($code);
$token = array_get($response, 'access_token');
// 为啥使用 code 的时候,获取到数据,不判断一下是否是weixin,然后通过 response 获取到 openid,赋值给 $driver?
} else {
$token = $request->access_token;
if ($type == 'weixin') {
$driver->setOpenId($request->openid);
}
}
}
下面是我修改的
try {
if ($code = $request->code) {
$response = $driver->getAccessTokenResponse($code);
$token = array_get($response, 'access_token');
if ($type == 'weixin') {
$driver->setOpenId(array_get($response, 'openid'));
}
} else {
$token = $request->access_token;
if ($type == 'weixin') {
$driver->setOpenId($request->openid);
}
}
$oauthUser = $driver->userFromToken($token);
}
关于 LearnKu
你这里多此一举了,因为
Socialite已经自动把我们设置了openid这个参数,所以你加的那一段代码,完全没有必要的翻看相关源码可知: