Quellcode durchsuchen

优化微信授权登录

萤火科技 vor 2 Jahren
Ursprung
Commit
e42f8342a9
2 geänderte Dateien mit 20 neuen und 9 gelöschten Zeilen
  1. 1 1
      app/api/service/passport/Login.php
  2. 19 8
      app/api/service/passport/Party.php

+ 1 - 1
app/api/service/passport/Login.php

@@ -246,7 +246,7 @@ class Login extends BaseService
         // 写入用户信息(第三方)
         // 如果不需要每次登录都更新微信用户头像昵称, 下面4行代码可以屏蔽掉
 //        if ($isParty === true && !empty($partyData)) {
-//            $partyUserInfo = PartyService::partyUserInfo($partyData, true);
+//            $partyUserInfo = PartyService::partyUserInfo($partyData);
 //            $data = array_merge($data, $partyUserInfo);
 //        }
         // 更新用户记录

+ 19 - 8
app/api/service/passport/Party.php

@@ -92,21 +92,32 @@ class Party extends BaseService
     /**
      * 第三方用户信息
      * @param array $partyData 第三方用户信息
+     * @param bool $defaultNickName 是否需要生成默认用户昵称 (仅首次注册时)
      * @param bool $isGetAvatarUrl 是否下载头像
      * @return array
      * @throws BaseException
      * @throws \think\Exception
      */
-    public static function partyUserInfo(array $partyData, bool $isGetAvatarUrl = true): array
+    public static function partyUserInfo(array $partyData, bool $defaultNickName = false, bool $isGetAvatarUrl = true): array
     {
-        $partyUserInfo = $partyData['userInfo'];
-        $data = [
-            'nick_name' => $partyUserInfo['nickName'],
-            'gender' => $partyUserInfo['gender']
-        ];
-        // 下载用户头像
+        $partyUserInfo = $partyData['userInfo'] ?? [];
+        $data = [];
+        if (!empty($partyUserInfo['nickName'])) {
+            $data['nick_name'] = $partyUserInfo['nickName'];
+        }
+        // 生成默认的用户昵称
+        if ($defaultNickName && empty($data['nick_name'])) {
+            $data['nick_name'] = self::getDefaultNickName($partyData);
+        }
         if ($isGetAvatarUrl) {
-            $data['avatar_id'] = static::partyAvatar($partyUserInfo['avatarUrl']);
+            // 记录avatarId
+            if (!empty($partyUserInfo['avatarId']) && $partyUserInfo['avatarId'] > 0) {
+                $data['avatar_id'] = (int)$partyUserInfo['avatarId'];
+            }
+            // 通过外链下载头像
+            if (empty($data['avatar_id']) && !empty($partyUserInfo['avatarUrl'])) {
+                $data['avatar_id'] = static::partyAvatar($partyUserInfo['avatarUrl']);
+            }
         }
         return $data;
     }