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