|
@@ -334,6 +334,7 @@ class User extends Base
|
|
|
public function wxMiniProgramOauth()
|
|
|
{
|
|
|
$post = $this->request->post();
|
|
|
+
|
|
|
$token = Db::transaction(function () use ($post) {
|
|
|
try {
|
|
|
$wechat = new Wechat('wxMiniProgram');
|
|
@@ -351,7 +352,7 @@ class User extends Base
|
|
|
$decryptData['headimgurl'] = $decryptData['avatarurl'];
|
|
|
$decryptData['sex'] = $decryptData['gender'];
|
|
|
$decryptData['session_key'] = $post['session_key'];
|
|
|
- return $this->oauthLoginOrRegisterOrBindOrRefresh($post['event'], $decryptData, 'wxMiniProgram', 'Wechat');
|
|
|
+ return $this->oauthLoginOrRegisterOrBindOrRefresh($post, $decryptData, 'wxMiniProgram', 'Wechat');
|
|
|
} catch (\Exception $e) {
|
|
|
$this->error($e->getMessage());
|
|
|
}
|
|
@@ -383,7 +384,7 @@ class User extends Base
|
|
|
throw \Exception($userInfo['errmsg']);
|
|
|
}
|
|
|
$decryptData = array_merge($userInfo, $authResult);
|
|
|
- return $this->oauthLoginOrRegisterOrBindOrRefresh($post['event'], $decryptData, 'App', 'Wechat');
|
|
|
+ return $this->oauthLoginOrRegisterOrBindOrRefresh($post, $decryptData, 'App', 'Wechat');
|
|
|
} catch (\Exception $e) {
|
|
|
$this->error($e->getMessage());
|
|
|
}
|
|
@@ -418,7 +419,7 @@ class User extends Base
|
|
|
$decryptData = $oauth->user()->getOriginal();
|
|
|
$token = Db::transaction(function () use ($payload, $decryptData) {
|
|
|
try {
|
|
|
- $token = $this->oauthLoginOrRegisterOrBindOrRefresh($payload['event'], $decryptData, 'wxOfficialAccount', 'Wechat');
|
|
|
+ $token = $this->oauthLoginOrRegisterOrBindOrRefresh($payload, $decryptData, 'wxOfficialAccount', 'Wechat');
|
|
|
return $token;
|
|
|
} catch (\Exception $e) {
|
|
|
$this->error($e->getMessage());
|
|
@@ -466,7 +467,7 @@ class User extends Base
|
|
|
'access_token' => $userInfo['authorizationCode'],
|
|
|
'headimgurl' => $headimgurl
|
|
|
];
|
|
|
- $token = $this->oauthLoginOrRegisterOrBindOrRefresh($post['event'], $decryptData, $platform, 'Apple');
|
|
|
+ $token = $this->oauthLoginOrRegisterOrBindOrRefresh($post, $decryptData, $platform, 'Apple');
|
|
|
}
|
|
|
} catch (\Exception $e) {
|
|
|
$this->error('登录失败:' . $e->getMessage());
|
|
@@ -508,8 +509,10 @@ class User extends Base
|
|
|
* @param int $keeptime 有效时长
|
|
|
* @return string $token 返回用户token
|
|
|
*/
|
|
|
- private function oauthLoginOrRegisterOrBindOrRefresh($event, $decryptData, $platform, $provider, $keeptime = 0)
|
|
|
+ private function oauthLoginOrRegisterOrBindOrRefresh($post, $decryptData, $platform, $provider, $keeptime = 0)
|
|
|
{
|
|
|
+ $event = $post['event'];
|
|
|
+ //throw \Exception( $post['spm']);
|
|
|
$oauthData = $decryptData;
|
|
|
$oauthData = array_merge($oauthData, [
|
|
|
'provider' => $provider,
|
|
@@ -546,14 +549,15 @@ class User extends Base
|
|
|
$password = '';
|
|
|
$domain = request()->host();
|
|
|
$extend = $this->getUserDefaultFields();
|
|
|
+ $spm = explode('.', $post['spm']);
|
|
|
$extend['nickname'] = $oauthData['nickname'] ? $oauthData['nickname'] : $extend['nickname'];
|
|
|
$extend['avatar'] = $oauthData['headimgurl'] ? $oauthData['headimgurl'] : $extend['avatar'];
|
|
|
+ $extend['pid'] = !empty($spm)? $spm[0] : 0;
|
|
|
$this->auth->register($username, $password, $username . '@' . $domain, '', $extend, $keeptime);
|
|
|
if (empty($oauthData['nickname'])) {
|
|
|
- $spm = explode('.', $this->request->post('spm'));
|
|
|
- $this->auth->getUser()->save(['nickname' => $extend['nickname'] . $this->auth->getUser()->id,'pid'=>$spm[0]]);
|
|
|
- UserModel::registerAfter($this->auth->getUser()->id,$spm[0]);
|
|
|
+ $this->auth->getUser()->save(['nickname' => $extend['nickname'] . $this->auth->getUser()->id]);
|
|
|
}
|
|
|
+ UserModel::registerAfter($this->auth->getUser()->id,!empty($spm)? $spm[0]: 0);
|
|
|
}
|
|
|
$oauthData['user_id'] = $this->auth->getUser()->id;
|
|
|
$oauthData['createtime'] = time();
|
|
@@ -568,7 +572,7 @@ class User extends Base
|
|
|
} else { // 用户已被删除 重新执行登录
|
|
|
// throw \Exception('此用户已删除');
|
|
|
$userOauth->delete();
|
|
|
- $this->oauthLoginOrRegisterOrBindOrRefresh($event, $decryptData, $platform, $provider); }
|
|
|
+ $this->oauthLoginOrRegisterOrBindOrRefresh($post, $decryptData, $platform, $provider); }
|
|
|
}
|
|
|
break;
|
|
|
case 'refresh':
|