|
diff -uNr vendor/socialiteproviders/weixin/Provider.php sinkcup/socialiteproviders/weixin/Provider.php |
|
--- vendor/socialiteproviders/weixin/Provider.php 2017-11-18 13:09:07.000000000 +0800 |
|
+++ sinkcup/socialiteproviders/weixin/Provider.php 2019-01-04 18:53:29.548886728 +0800 |
|
@@ -100,7 +100,7 @@ |
|
protected function mapUserToObject(array $user) |
|
{ |
|
return (new User())->setRaw($user)->map([ |
|
- 'id' => $user['openid'], |
|
+ 'id' => $user['unionid'], |
|
'nickname' => isset($user['nickname']) ? $user['nickname'] : null, |
|
'avatar' => isset($user['headimgurl']) ? $user['headimgurl'] : null, |
|
'name' => null, |
|
diff -uNr vendor/socialiteproviders/weixin-web/Provider.php sinkcup/socialiteproviders/weixin-web/Provider.php |
|
--- vendor/socialiteproviders/weixin-web/Provider.php 2018-02-12 14:58:19.000000000 +0800 |
|
+++ sinkcup/socialiteproviders/weixin-web/Provider.php 2019-01-04 18:56:17.885697393 +0800 |
|
@@ -99,7 +99,7 @@ |
|
protected function mapUserToObject(array $user) |
|
{ |
|
return (new User())->setRaw($user)->map([ |
|
- 'id' => Arr::get($user, 'openid'), 'nickname' => $user['nickname'], |
|
+ 'id' => Arr::get($user, 'unionid'), 'nickname' => $user['nickname'], |
|
'avatar' => $user['headimgurl'], 'name' => null, 'email' => null, |
|
]); |
|
} |
|
diff -uNr vendor/sinkcup/laravel-make-auth-socialite/src/Http/Controllers/SocialiteLoginController.php laravel-make-auth-socialite/src/Http/Controllers/SocialiteLoginController.php |
|
--- vendor/sinkcup/laravel-make-auth-socialite/src/Http/Controllers/SocialiteLoginController.php 2019-01-17 20:49:27.385501906 +0800 |
|
+++ laravel-make-auth-socialite/src/Http/Controllers/SocialiteLoginController.php 2019-04-18 19:20:54.884507335 +0800 |
|
@@ -80,10 +80,25 @@ |
|
return $this->sendFailedSocialLoginResponse($provider); |
|
} |
|
|
|
+ // check wechat union id |
|
+ if ($provider == 'weixinweb') { |
|
+ $provider = 'wechat_web'; |
|
+ } elseif ($provider == 'weixin') { |
|
+ $provider = 'wechat_service_account'; |
|
+ } |
|
+ $wechat_providers = ['wechat_web', 'wechat_service_account']; |
|
+ $user_id = null; |
|
+ if (in_array($provider, $wechat_providers)) { |
|
+ $user_id = SocialAccount::whereIn('provider', array_diff($wechat_providers, [$provider])) |
|
+ ->where('provider_user_id', $remote_user->getId()) |
|
+ ->whereNotNull('user_id') |
|
+ ->value('user_id'); |
|
+ } |
|
+ |
|
$social_account = SocialAccount::firstOrNew([ |
|
'provider' => $provider, |
|
'provider_user_id' => $remote_user->getId(), |
|
- ]); |
|
+ ], ['user_id' => $user_id]); |
|
$name = $remote_user->getName() ?: $remote_user->getNickname(); |
|
if (!empty($social_account->user)) { |
|
$user = $social_account->user; |