Files
ichni_Official/Assets/Scripts/Online/Logic/ThirdPartyServiceManager.cs

114 lines
3.4 KiB
C#
Raw Normal View History

2026-04-24 14:09:37 +08:00
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Sirenix.OdinInspector;
using TapSDK.Core;
using TapSDK.Login;
using UnityEngine;
2026-06-15 14:54:30 +08:00
namespace IchniOnline.Online.Logic
2026-04-24 14:09:37 +08:00
{
public class ThirdPartyServiceManager:SerializedMonoBehaviour
{
public static ThirdPartyServiceManager Instance { get; private set; } = null!;
2026-06-15 14:54:30 +08:00
/// <summary>
/// TapTap 登录成功时触发,参数为登录获得的 TapTapAccount
/// </summary>
public event Action<TapTapAccount> OnLoginSuccess;
/// <summary>
/// TapTap 登录被用户取消时触发
/// </summary>
public event Action OnLoginCanceled;
/// <summary>
/// TapTap 登录失败时触发,参数为异常信息
/// </summary>
public event Action<string> OnLoginFailed;
private bool _initialized;
2026-04-24 14:09:37 +08:00
private void Awake()
{
if (Instance != null)
{
Destroy(gameObject);
return;
}
Instance = this;
DontDestroyOnLoad(gameObject);
}
private void Start()
{
2026-06-15 14:54:30 +08:00
InitializeTapTapSDK();
}
private void InitializeTapTapSDK()
{
if (_initialized) return;
2026-04-24 14:09:37 +08:00
// 核心配置 详细参数见 [TapTapSDK]
TapTapSdkOptions coreOptions = new TapTapSdkOptions()
{
clientId = "hkbfpbh2jv2kbxupmo",
clientToken = "Cry8OrA9EmfAetgu1RduPrWntgba2Qt44uC5tfEB",
region = TapTapRegionType.Overseas,
preferredLanguage = TapTapLanguageType.en,
enableLog = true
};
// TapSDK 初始化
2026-06-15 14:54:30 +08:00
TapTapSDK.Init(coreOptions);
_initialized = true;
2026-04-24 14:09:37 +08:00
}
2026-06-15 14:54:30 +08:00
/// <summary>
/// 发起 TapTap 登录,由 UI 按钮调用。
/// 登录结果通过事件 OnLoginSuccess / OnLoginCanceled / OnLoginFailed 通知。
/// </summary>
public async void StartTapTapLogin()
2026-04-24 14:09:37 +08:00
{
2026-06-15 14:54:30 +08:00
// 确保 SDK 已初始化
if (!_initialized)
{
InitializeTapTapSDK();
}
2026-04-24 14:09:37 +08:00
try
{
// 定义授权范围
List<string> scopes = new List<string>
{
TapTapLogin.TAP_LOGIN_SCOPE_PUBLIC_PROFILE,
TapTapLogin.TAP_LOGIN_SCOPE_EMAIL
};
// 发起 Tap 登录
2026-06-15 14:54:30 +08:00
var account = await TapTapLogin.Instance.LoginWithScopes(scopes.ToArray());
Debug.Log($"TapTap 登录成功,用户 ID{account.openId}name{account.name}");
LoginCacheManager.SaveFromTapTapAccount(account);
OnLoginSuccess?.Invoke(account);
2026-04-24 14:09:37 +08:00
}
catch (TaskCanceledException)
{
2026-06-15 14:54:30 +08:00
Debug.Log("用户取消 TapTap 登录");
OnLoginCanceled?.Invoke();
2026-04-24 14:09:37 +08:00
}
catch (Exception exception)
{
2026-06-15 14:54:30 +08:00
Debug.LogError($"TapTap 登录失败:{exception}");
OnLoginFailed?.Invoke(exception.Message);
2026-04-24 14:09:37 +08:00
}
}
2026-06-15 14:54:30 +08:00
/// <summary>
/// 登出 TapTap
/// </summary>
public void Logout()
{
TapTapLogin.Instance.Logout();
Debug.Log("TapTap 已登出");
}
2026-04-24 14:09:37 +08:00
}
}