update: 更新和重构 Auth 部分的引用和回调, 干掉成员属性, 改为回调内传递 Firebase 用户
Signed-off-by: huyufei <yufei.hu@castbox.fm>
parent
9c6f2cf962
commit
880a90cce4
|
|
@ -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
|
|||
/// <param name="authToken"></param>
|
||||
/// <param name="onLoginResult"></param>
|
||||
/// <param name="autoRetry"></param>
|
||||
private static void LoginFirebaseWithToken(Action<bool> onLoginResult = null, string authToken = "", bool autoRetry = true)
|
||||
private static void LoginFirebaseWithToken(Action<bool, FirebaseUser> 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<bool> onLoginResult = null)
|
||||
private static void LoginFirebase(string authToken = "", bool autoRetry = true, Action<bool, FirebaseUser> 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<bool> callback, string token = "")
|
||||
// {
|
||||
// var delay = new WaitForSeconds(delaySeconds);
|
||||
// CoroutineHelper.Instance.StartDelayed(delay, ()=> LoginFirebaseWithToken(callback, token));
|
||||
// }
|
||||
|
||||
/// <summary>
|
||||
/// 延迟调用 Firebase 登录请求
|
||||
/// 延迟再次调用 Firebase 的登录接口
|
||||
/// </summary>
|
||||
/// <param name="delaySeconds"></param>
|
||||
/// <param name="callback"></param>
|
||||
/// <param name="token"></param>
|
||||
private static void DelayCallFirebaseLogin(float delaySeconds, Action<bool> callback, string token = "")
|
||||
private static async void DelayCallFirebaseLogin(float delaySeconds, Action<bool, FirebaseUser> callback, string token = "")
|
||||
{
|
||||
var delay = new WaitForSeconds(delaySeconds);
|
||||
CoroutineHelper.Instance.StartDelayed(delay, ()=> LoginFirebaseWithToken(callback, token));
|
||||
await Task.Delay((int)(delaySeconds * 1000));
|
||||
LoginFirebaseWithToken(callback, token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
using Firebase.Auth;
|
||||
|
||||
namespace Guru
|
||||
{
|
||||
using System;
|
||||
|
|
@ -18,7 +20,7 @@ namespace Guru
|
|||
private static Action<bool> _onCheckAndFixDepsHandler;
|
||||
private static Action<string> _onGetFirebaseIdHandler;
|
||||
private static Action<bool> _onGetGuruUIDHandler;
|
||||
private static Action<bool> _onFirebaseLoginResult;
|
||||
private static Action<bool, FirebaseUser> _onFirebaseLoginResult;
|
||||
|
||||
/// <summary>
|
||||
/// 初始化 Firebase
|
||||
|
|
@ -28,7 +30,7 @@ namespace Guru
|
|||
/// <param name="onGetGuruUIDResult">Firebase 授权回调</param>
|
||||
/// <param name="onFirebaseLoginResult"></param>
|
||||
public static void Init(Action<bool> onDepsCheckResult, Action<string> onGetFirebaseId = null,
|
||||
Action<bool> onGetGuruUIDResult = null, Action<bool> onFirebaseLoginResult = null)
|
||||
Action<bool> onGetGuruUIDResult = null, Action<bool, FirebaseUser> onFirebaseLoginResult = null)
|
||||
{
|
||||
_isReady = false;
|
||||
_onCheckAndFixDepsHandler = onDepsCheckResult;
|
||||
|
|
@ -199,14 +201,15 @@ namespace Guru
|
|||
{
|
||||
LoginFirebaseWithToken(OnFirebaseLoginComplete, IPMConfig.IPM_FIREBASE_TOKEN); // 成功后进行 Firebase 认证
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Firebase 认证用户完成
|
||||
/// </summary>
|
||||
/// <param name="success"></param>
|
||||
private static void OnFirebaseLoginComplete(bool success)
|
||||
/// <param name="firebaseUser"></param>
|
||||
private static void OnFirebaseLoginComplete(bool success, FirebaseUser firebaseUser = null)
|
||||
{
|
||||
_onFirebaseLoginResult?.Invoke(success);
|
||||
_onFirebaseLoginResult?.Invoke(success, firebaseUser);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
|||
Loading…
Reference in New Issue