update: 更新和重构 Auth 部分的引用和回调, 干掉成员属性, 改为回调内传递 Firebase 用户
Signed-off-by: huyufei <yufei.hu@castbox.fm>
parent
9c6f2cf962
commit
880a90cce4
|
|
@ -1,16 +1,13 @@
|
||||||
|
|
||||||
|
|
||||||
namespace Guru
|
namespace Guru
|
||||||
{
|
{
|
||||||
using System;
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Firebase.Auth;
|
using Firebase.Auth;
|
||||||
using Firebase.Extensions;
|
using Firebase.Extensions;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public static partial class FirebaseUtil
|
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_MAX_TIME = 60; // 最大请求间隔时间
|
||||||
private const float LOGIN_RETRY_INTERVAL = 10; // 最大请求间隔时间
|
private const float LOGIN_RETRY_INTERVAL = 10; // 最大请求间隔时间
|
||||||
private static float _retryDelayTime = 10; // 登录重试时间
|
private static float _retryDelayTime = 10; // 登录重试时间
|
||||||
|
|
@ -21,13 +18,16 @@ namespace Guru
|
||||||
/// <param name="authToken"></param>
|
/// <param name="authToken"></param>
|
||||||
/// <param name="onLoginResult"></param>
|
/// <param name="onLoginResult"></param>
|
||||||
/// <param name="autoRetry"></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 已获取用户
|
// #1 Firebase 已获取用户
|
||||||
if (FirebaseUser != null)
|
if (firebaseUser != null)
|
||||||
{
|
{
|
||||||
Log.I(LOG_TAG, $"[Auth] user exists,UserId:{FirebaseUser.UserId}");
|
Log.I(LOG_TAG, $"[Auth] user exists,UserId:{firebaseUser.UserId}");
|
||||||
onLoginResult?.Invoke(true);
|
onLoginResult?.Invoke(true, firebaseUser);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -51,12 +51,13 @@ namespace Guru
|
||||||
else
|
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)
|
FirebaseAuth.DefaultInstance.SignInWithCustomTokenAsync(authToken)
|
||||||
.ContinueWithOnMainThread(task =>
|
.ContinueWithOnMainThread(task =>
|
||||||
{
|
{
|
||||||
|
|
@ -70,31 +71,37 @@ namespace Guru
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
onLoginResult?.Invoke(false); // 不再重试
|
onLoginResult?.Invoke(false, null); // 不再重试
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// ----- Check Result -----
|
// ----- Check Result -----
|
||||||
bool success = FirebaseUser != null;
|
var firebaseUser = FirebaseAuth.DefaultInstance.CurrentUser;
|
||||||
onLoginResult?.Invoke(success);
|
bool success = firebaseUser != null;
|
||||||
|
onLoginResult?.Invoke(success, firebaseUser);
|
||||||
_retryDelayTime = LOGIN_RETRY_INTERVAL;
|
_retryDelayTime = LOGIN_RETRY_INTERVAL;
|
||||||
|
|
||||||
Analytics.SetSignUpMethod("google"); // 上报用户登录属性
|
Analytics.SetSignUpMethod("google"); // 上报用户登录属性
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO:P0 协程不应该用在此场景
|
// 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>
|
/// <summary>
|
||||||
/// 延迟调用 Firebase 登录请求
|
/// 延迟再次调用 Firebase 的登录接口
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="delaySeconds"></param>
|
/// <param name="delaySeconds"></param>
|
||||||
/// <param name="callback"></param>
|
/// <param name="callback"></param>
|
||||||
/// <param name="token"></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);
|
await Task.Delay((int)(delaySeconds * 1000));
|
||||||
CoroutineHelper.Instance.StartDelayed(delay, ()=> LoginFirebaseWithToken(callback, token));
|
LoginFirebaseWithToken(callback, token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
using Firebase.Auth;
|
||||||
|
|
||||||
namespace Guru
|
namespace Guru
|
||||||
{
|
{
|
||||||
using System;
|
using System;
|
||||||
|
|
@ -18,7 +20,7 @@ namespace Guru
|
||||||
private static Action<bool> _onCheckAndFixDepsHandler;
|
private static Action<bool> _onCheckAndFixDepsHandler;
|
||||||
private static Action<string> _onGetFirebaseIdHandler;
|
private static Action<string> _onGetFirebaseIdHandler;
|
||||||
private static Action<bool> _onGetGuruUIDHandler;
|
private static Action<bool> _onGetGuruUIDHandler;
|
||||||
private static Action<bool> _onFirebaseLoginResult;
|
private static Action<bool, FirebaseUser> _onFirebaseLoginResult;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 初始化 Firebase
|
/// 初始化 Firebase
|
||||||
|
|
@ -28,7 +30,7 @@ namespace Guru
|
||||||
/// <param name="onGetGuruUIDResult">Firebase 授权回调</param>
|
/// <param name="onGetGuruUIDResult">Firebase 授权回调</param>
|
||||||
/// <param name="onFirebaseLoginResult"></param>
|
/// <param name="onFirebaseLoginResult"></param>
|
||||||
public static void Init(Action<bool> onDepsCheckResult, Action<string> onGetFirebaseId = null,
|
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;
|
_isReady = false;
|
||||||
_onCheckAndFixDepsHandler = onDepsCheckResult;
|
_onCheckAndFixDepsHandler = onDepsCheckResult;
|
||||||
|
|
@ -199,14 +201,15 @@ namespace Guru
|
||||||
{
|
{
|
||||||
LoginFirebaseWithToken(OnFirebaseLoginComplete, IPMConfig.IPM_FIREBASE_TOKEN); // 成功后进行 Firebase 认证
|
LoginFirebaseWithToken(OnFirebaseLoginComplete, IPMConfig.IPM_FIREBASE_TOKEN); // 成功后进行 Firebase 认证
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Firebase 认证用户完成
|
/// Firebase 认证用户完成
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="success"></param>
|
/// <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
|
#endregion
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue