fix(sdk): 修复登录数据处理和账户绑定功能

- 修改Android端登录数据结构,统一使用loginData字段
- 添加JSON异常处理机制,避免解析错误导致崩溃
- 修复Unity端登录数据解析路径,从respObj.result改为loginData
- 在账户绑定成功后更新账户信息,添加渠道标识
- 优化链接账户回调处理,支持登录数据的完整传递
- 修复代码格式和字符串拼接问题
This commit is contained in:
2025-12-31 17:15:25 +08:00
parent 053bdf70a2
commit b0cce65e54
2 changed files with 49 additions and 15 deletions

View File

@@ -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
{

View File

@@ -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<Dictionary<string, string>>(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";