From 880a90cce450a00966e856a7fc86db24ad4fd875 Mon Sep 17 00:00:00 2001 From: huyufei Date: Sun, 11 Aug 2024 15:34:20 +0800 Subject: [PATCH] =?UTF-8?q?update=EF=BC=9A=20=E6=9B=B4=E6=96=B0=E5=92=8C?= =?UTF-8?q?=E9=87=8D=E6=9E=84=20Auth=20=E9=83=A8=E5=88=86=E7=9A=84?= =?UTF-8?q?=E5=BC=95=E7=94=A8=E5=92=8C=E5=9B=9E=E8=B0=83=EF=BC=8C=20?= =?UTF-8?q?=E5=B9=B2=E6=8E=89=E6=88=90=E5=91=98=E5=B1=9E=E6=80=A7=EF=BC=8C?= =?UTF-8?q?=20=E6=94=B9=E4=B8=BA=E5=9B=9E=E8=B0=83=E5=86=85=E4=BC=A0?= =?UTF-8?q?=E9=80=92=20Firebase=20=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huyufei --- .../Runtime/Firebase/FirebaseUtil.Auth.cs | 43 +++++++++++-------- .../GuruCore/Runtime/Firebase/FirebaseUtil.cs | 13 +++--- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Auth.cs b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Auth.cs index a63d2d6..dd0a076 100644 --- a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Auth.cs +++ b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Auth.cs @@ -1,16 +1,13 @@ - - namespace Guru { using System; + using System.Threading.Tasks; using Firebase.Auth; using Firebase.Extensions; using UnityEngine; public static partial class FirebaseUtil { - private static FirebaseUser FirebaseUser => FirebaseAuth.DefaultInstance.CurrentUser; - private const float LOGIN_RETRY_MAX_TIME = 60; // 最大请求间隔时间 private const float LOGIN_RETRY_INTERVAL = 10; // 最大请求间隔时间 private static float _retryDelayTime = 10; // 登录重试时间 @@ -21,13 +18,16 @@ namespace Guru /// /// /// - private static void LoginFirebaseWithToken(Action onLoginResult = null, string authToken = "", bool autoRetry = true) + private static void LoginFirebaseWithToken(Action onLoginResult = null, string authToken = "", bool autoRetry = true) { + var firebaseUser = FirebaseAuth.DefaultInstance.CurrentUser; + + // #1 Firebase 已获取用户 - if (FirebaseUser != null) + if (firebaseUser != null) { - Log.I(LOG_TAG, $"[Auth] user exists,UserId:{FirebaseUser.UserId}"); - onLoginResult?.Invoke(true); + Log.I(LOG_TAG, $"[Auth] user exists,UserId:{firebaseUser.UserId}"); + onLoginResult?.Invoke(true, firebaseUser); return; } @@ -51,12 +51,13 @@ namespace Guru else { // 不再重试 - onLoginResult?.Invoke(false); + onLoginResult?.Invoke(false, null); } } - private static void LoginFirebase(string authToken = "", bool autoRetry = true, Action onLoginResult = null) + private static void LoginFirebase(string authToken = "", bool autoRetry = true, Action onLoginResult = null) { + FirebaseAuth.DefaultInstance.SignInWithCustomTokenAsync(authToken) .ContinueWithOnMainThread(task => { @@ -70,31 +71,37 @@ namespace Guru } else { - onLoginResult?.Invoke(false); // 不再重试 + onLoginResult?.Invoke(false, null); // 不再重试 } return; } // ----- Check Result ----- - bool success = FirebaseUser != null; - onLoginResult?.Invoke(success); + var firebaseUser = FirebaseAuth.DefaultInstance.CurrentUser; + bool success = firebaseUser != null; + onLoginResult?.Invoke(success, firebaseUser); _retryDelayTime = LOGIN_RETRY_INTERVAL; - Analytics.SetSignUpMethod("google"); // 上报用户登录属性 }); } // TODO:P0 协程不应该用在此场景 + // private static void DelayCallFirebaseLogin(float delaySeconds, Action callback, string token = "") + // { + // var delay = new WaitForSeconds(delaySeconds); + // CoroutineHelper.Instance.StartDelayed(delay, ()=> LoginFirebaseWithToken(callback, token)); + // } + /// - /// 延迟调用 Firebase 登录请求 + /// 延迟再次调用 Firebase 的登录接口 /// /// /// /// - private static void DelayCallFirebaseLogin(float delaySeconds, Action callback, string token = "") + private static async void DelayCallFirebaseLogin(float delaySeconds, Action callback, string token = "") { - var delay = new WaitForSeconds(delaySeconds); - CoroutineHelper.Instance.StartDelayed(delay, ()=> LoginFirebaseWithToken(callback, token)); + await Task.Delay((int)(delaySeconds * 1000)); + LoginFirebaseWithToken(callback, token); } } } \ No newline at end of file diff --git a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs index ec50666..ff71115 100644 --- a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs +++ b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs @@ -1,3 +1,5 @@ +using Firebase.Auth; + namespace Guru { using System; @@ -18,7 +20,7 @@ namespace Guru private static Action _onCheckAndFixDepsHandler; private static Action _onGetFirebaseIdHandler; private static Action _onGetGuruUIDHandler; - private static Action _onFirebaseLoginResult; + private static Action _onFirebaseLoginResult; /// /// 初始化 Firebase @@ -28,7 +30,7 @@ namespace Guru /// Firebase 授权回调 /// public static void Init(Action onDepsCheckResult, Action onGetFirebaseId = null, - Action onGetGuruUIDResult = null, Action onFirebaseLoginResult = null) + Action onGetGuruUIDResult = null, Action onFirebaseLoginResult = null) { _isReady = false; _onCheckAndFixDepsHandler = onDepsCheckResult; @@ -199,14 +201,15 @@ namespace Guru { LoginFirebaseWithToken(OnFirebaseLoginComplete, IPMConfig.IPM_FIREBASE_TOKEN); // 成功后进行 Firebase 认证 } - + /// /// Firebase 认证用户完成 /// /// - private static void OnFirebaseLoginComplete(bool success) + /// + private static void OnFirebaseLoginComplete(bool success, FirebaseUser firebaseUser = null) { - _onFirebaseLoginResult?.Invoke(success); + _onFirebaseLoginResult?.Invoke(success, firebaseUser); } #endregion