|
|
|
@ -86,11 +86,17 @@ class Login extends Base |
|
|
|
|
|
|
|
$tokenArr = file_get_contents($getAccessTokenUrl); |
|
|
|
$accessTokenArr = json_decode($tokenArr, true); |
|
|
|
if (!$accessTokenArr || isset($accessTokenArr['errcode'])) { |
|
|
|
return $this->buildFailed(ReturnCode::SESSION_TIMEOUT, '获取AccessToken失败'); |
|
|
|
} |
|
|
|
|
|
|
|
//获取openId |
|
|
|
$getUserIdUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $accessTokenArr['access_token'] . '&openid=' . $accessTokenArr['openid']; |
|
|
|
$userIdArr = file_get_contents($getUserIdUrl); |
|
|
|
$userIdArr = json_decode($userIdArr, true); |
|
|
|
if (!$userIdArr || isset($userIdArr['errcode'])) { |
|
|
|
return $this->buildFailed(ReturnCode::SESSION_TIMEOUT, '获取用户信息失败'); |
|
|
|
} |
|
|
|
|
|
|
|
return $this->doLogin($userIdArr['openid'], [ |
|
|
|
'nickname' => $userIdArr['nickname'], |
|
|
|
@ -100,12 +106,14 @@ class Login extends Base |
|
|
|
|
|
|
|
private function doLogin(string $openid, array $userDetail): Response { |
|
|
|
$userInfo = (new WechatUser())->where('openid', $openid)->find(); |
|
|
|
if (!empty($userInfo)) { |
|
|
|
if (empty($userInfo)) { |
|
|
|
$userInfo = WechatUser::create([ |
|
|
|
'nickname' => $userDetail['nickname'], |
|
|
|
'openid' => $openid, |
|
|
|
'sex' => $userDetail['sex'] ?? 0, |
|
|
|
'unionid' => $userDetail['unionid'] ?? '', |
|
|
|
'create_time' => time(), |
|
|
|
'headimgurl' => $userDetail['head_img'], |
|
|
|
'headimgurl' => $userDetail['head_img'], |
|
|
|
]); |
|
|
|
} else { |
|
|
|
if (!$userInfo['status']) { |
|
|
|
|