修复:用户为关注公众号时 静默登录出现错误,导致登录失败

This commit is contained in:
wuhui_zzw 2024-05-24 16:24:42 +08:00
parent 79c3c81ce1
commit 3f393509e3
2 changed files with 11 additions and 8 deletions

View File

@ -42,7 +42,9 @@ class LoginController extends ApiController
$code = request()->input('code');
if (request()->input('iscode') == 1 || ($code !=1 && !empty($code))) {
$className = new MemberOfficeAccountService();
$className->getWechatOpenid();
$res = $className->getWechatOpenid();
return $this->errorJson($res['json'], ['status' => $res['status']]);
}
if (!empty($type)) {
$member = MemberFactory::create($type);

View File

@ -85,8 +85,7 @@ class MemberOfficeAccountService extends MemberService
}
public function getWechatOpenid()
{
public function getWechatOpenid(){
$uniacid = \YunShop::app()->uniacid;
$code = \YunShop::request()->code;
$account = AccountWechats::getAccountByUniacid($uniacid);
@ -96,6 +95,7 @@ class MemberOfficeAccountService extends MemberService
$callback = ($_SERVER['REQUEST_SCHEME'] ? $_SERVER['REQUEST_SCHEME'] : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$authurl = $this->_getAuthBaseUrl($appId, $callback, $state);
$tokenurl = $this->_getTokenUrl($appId, $appSecret, $code);
if (!empty($code)) {
$redirect_url = base64_decode(\YunShop::request()->page).'&code=1';
$token = \Curl::to($tokenurl)
@ -104,11 +104,12 @@ class MemberOfficeAccountService extends MemberService
if (!empty($token) && !empty($token['errmsg']) && $token['errmsg'] == 'invalid code') {
return show_json(5, 'token请求错误');
}
$userinfo = $this->getUserInfo($appId, $appSecret, $token);
if (is_array($userinfo) && !empty($userinfo['errcode'])) {
\Log::debug('微信登陆授权失败-' . $userinfo['errcode']);
return show_json(-3, '微信登陆授权失败');
}
// todo 2024-5-24 注释,添加该内容时;未关注公众号用户登录失败,直接报错;直接进注释操作(不清除后续没有用到userinfo 为什么会进行一次查询)
// $userinfo = $this->getUserInfo($appId, $appSecret, $token);
// if (is_array($userinfo) && !empty($userinfo['errcode'])) {
// \Log::debug('微信登陆授权失败-' . $userinfo['errcode']);
// return show_json(-3, $userinfo['errmsg']);
// }
Session::set('wx_open_id', $token['openid']);
redirect($redirect_url)->send();
} else {