From b0cce65e54195ed7ddafe746f46b86e4cbedfe53 Mon Sep 17 00:00:00 2001 From: tech Date: Wed, 31 Dec 2025 17:15:25 +0800 Subject: [PATCH] =?UTF-8?q?fix(sdk):=20=E4=BF=AE=E5=A4=8D=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E5=92=8C=E8=B4=A6?= =?UTF-8?q?=E6=88=B7=E7=BB=91=E5=AE=9A=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改Android端登录数据结构,统一使用loginData字段 - 添加JSON异常处理机制,避免解析错误导致崩溃 - 修复Unity端登录数据解析路径,从respObj.result改为loginData - 在账户绑定成功后更新账户信息,添加渠道标识 - 优化链接账户回调处理,支持登录数据的完整传递 - 修复代码格式和字符串拼接问题 --- .../tysdk/Plugins/Android/SDKManager.java | 26 +++++++++---- .../Packages/tysdk/Runtime/TYSdkFacade.cs | 38 +++++++++++++++---- 2 files changed, 49 insertions(+), 15 deletions(-) diff --git a/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java b/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java index c825add..d8b90ff 100644 --- a/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java +++ b/sdk-intergration/Packages/tysdk/Plugins/Android/SDKManager.java @@ -44,6 +44,8 @@ import org.json.JSONObject; import java.util.HashMap; import java.util.Map; +import kotlinx.serialization.json.Json; + public class SDKManager { private final static Handler handler = new Handler(Looper.getMainLooper()); @@ -78,9 +80,7 @@ public class SDKManager { if (i == 0) { JSONObject serverResponse = new JSONObject(s); JSONObject userInfo = serverResponse.getJSONObject("result"); - JSONObject userInfoResult = new JSONObject(); - userInfoResult.put("result", userInfo); - result.put("respObj", userInfoResult); + result.put("loginData", userInfo ); } else { result.put("errStr", s); } @@ -163,7 +163,7 @@ public class SDKManager { private static SnsInfo tmpSnsInfo; public static void LinkAccount(String type, String userId) - { + { SDKAPI.getIns().getSnsInfo(type, (snscode, snsInfo, snsmsg) ->{ if(snscode == SDKCallBack.CODE_SUCCESS && snsInfo !=null) { @@ -171,10 +171,22 @@ public class SDKManager { SDKAPI.getIns().bindBySnsId(snsInfo, userId, (bindcode, bindmsg)->{ if(bindcode == SDKCallBack.CODE_SUCCESS) { - String msg = "{\"code\":0, \"userId\": 0}"; - UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LINKACCOUT_CALLBACK_FUNCTION_NAME, msg); + try { + JSONObject result = new JSONObject(); + result.put("code", bindcode); + result.put("userId", userId); + + JSONObject serverResponse = new JSONObject(bindmsg); + JSONObject userInfo = serverResponse.getJSONObject("result"); + result.put("loginData", userInfo); + UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LINKACCOUT_CALLBACK_FUNCTION_NAME, result.toString()); + + } catch (JSONException e) { + String msg = "{\"code\":1, \"userId\": 0}"; + UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME, ConfigManager.LINKACCOUT_CALLBACK_FUNCTION_NAME, msg); + } } - else if(bindcode == 1) + else if(bindcode == SDKCallBack.CODE_FAILED) { try { diff --git a/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs b/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs index 9a30784..1b1991f 100644 --- a/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs +++ b/sdk-intergration/Packages/tysdk/Runtime/TYSdkFacade.cs @@ -128,10 +128,10 @@ namespace tysdk /*================================================ - _ _ - / \ ___ ___ ___ _ _ _ __ | |_ + _ _ + / \ ___ ___ ___ _ _ _ __ | |_ / _ \ / __/ __/ _ \| | | | '_ \| __| - / ___ \ (_| (_| (_) | |_| | | | | |_ + / ___ \ (_| (_| (_) | |_| | | | | |_ /_/ \_\___\___\___/ \__,_|_| |_|\__| =================================================*/ @@ -259,7 +259,7 @@ namespace tysdk if (code == 0) { - var loginData = data["respObj"]["result"]; + var loginData = data["loginData"]; var userId = (int)loginData["userId"]; var token = (string)loginData["token"]; @@ -326,6 +326,7 @@ namespace tysdk if (_accountInfo != null) { + _accountInfo.channel = accoutType; _accountInfo.AddLinkedAccount(accoutType); _accountInfo.Save(); } @@ -353,6 +354,27 @@ namespace tysdk result.bindInfo = JsonConvert.DeserializeObject>(data.GetValue(@"bindInfo").ToString()); } + if (result.code == 0 && data.ContainsKey("loginData")) + { + var loginData = data["loginData"]; + + var userId = (int)loginData["userId"]; + var token = (string)loginData["token"]; + var jwtToken = (string)loginData["jwttoken"]; + + var savedInfo = AccountInfo.GetSavedAccoutInfo(); + if (savedInfo == null || savedInfo.userId != userId) + { + _accountInfo = new AccountInfo() + { + userId = (int)loginData["userId"], + userName = (string)loginData["userName"], + avatar = (string)loginData["purl"], + token = (string)loginData["token"], + jwtToken = (string)loginData["jwttoken"], + }; + } + } TYSDKCallbackManager.Instance.TryTriggerCallback(result); } #endif @@ -392,8 +414,8 @@ namespace tysdk } catch(Exception e) { - Debug.LogWarning($"[TYSdkFacade] CheckLinkResult error: {e}"); - return false; + Debug.LogWarning($"[TYSdkFacade] CheckLinkResult error: {e}"); + return false; } } @@ -459,7 +481,7 @@ namespace tysdk string listStr = string.Join("&", list.ToArray()); string sign = listStr + - "csh-api-6dfa879490a249be9fbc92e97e4d898d-api-csh"; + "csh-api-6dfa879490a249be9fbc92e97e4d898d-api-csh"; //对sign进行MD5加密 string signMd5 = CalculateMD5Hash(sign); string url = $"{tycs}?{listStr}&sign={signMd5}&isAbroad=1&lan=en"; @@ -490,4 +512,4 @@ namespace tysdk return sBuilder.ToString(); } } -} +} \ No newline at end of file