Fixed authg + added graphql client.

This commit is contained in:
Patrick Fic
2020-01-16 21:48:03 -08:00
parent cfec5327dd
commit d77e0d1c02
5 changed files with 44 additions and 15 deletions

View File

@@ -12,9 +12,6 @@ namespace BodyshopUploader.Utils
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public static FirebaseAuthLink authlink;
public static string authToken;
static string refreshToken;
static int tokenExpiration;
static FirebaseAuthProvider ap = new FirebaseAuthProvider(new FirebaseConfig(Utils.AppMetaData.FirebaseAPIKey_DEV)); //TODO: Update this to be a dynamic key. Perhaps a function that fetches?
private static Timer tokenTimer = new Timer();
@@ -23,15 +20,17 @@ namespace BodyshopUploader.Utils
try
{
authlink = await ap.SignInWithEmailAndPasswordAsync(Username, Password);
authToken = authlink.FirebaseToken;
refreshToken = authlink.RefreshToken;
tokenExpiration = authlink.ExpiresIn;
logger.Trace("Firebase Auth Token {0}.", authToken);
logger.Trace("Firebase Refresh Token {0}.", refreshToken);
logger.Trace("Firebase Auth Token expires in {0} seconds.", tokenExpiration);
authlink.FirebaseAuthRefreshed += Authlink_FirebaseAuthRefreshed;
logger.Trace("Firebase Auth Token {0}.", authlink.FirebaseToken);
logger.Trace("Firebase Refresh Token {0}.", authlink.RefreshToken);
logger.Trace("Firebase Auth Token expires in {0} seconds.", authlink.ExpiresIn);
//tokenTimer.Interval = (authlink.ExpiresIn - 600) * 1000; //Set the token to refresh 10 minutes before it has to.
tokenTimer.Interval = 10000; //Set the token to refresh 10 minutes before it has to.
logger.Trace("Refresh timer interval set to {0}ms", (authlink.ExpiresIn - 600) * 1000);
tokenTimer.Elapsed += TokenTimer_Tick;
tokenTimer.Start();
tokenTimer.Interval = (tokenExpiration - 600) * 1000; //Set the token to refresh 10 minutes before it has to.
tokenTimer.Elapsed += TokenTimer_Elapsed;
return (true, null);
}
catch (FirebaseAuthException Ex)
@@ -60,10 +59,31 @@ namespace BodyshopUploader.Utils
}
}
private static void TokenTimer_Elapsed(object sender, ElapsedEventArgs e)
public static async Task Refresh()
{
logger.Info("Old Token {0}", authlink.RefreshToken);
await authlink.GetFreshAuthAsync();
authlink = await ap.RefreshAuthAsync(authlink);
logger.Info("new Token {0}", authlink.FirebaseToken);
}
private static void Authlink_FirebaseAuthRefreshed(object sender, FirebaseAuthEventArgs e)
{
logger.Debug("Auth token refreshed!");
logger.Debug("New token: {0}", e.FirebaseAuth.FirebaseToken);
}
private static void TokenTimer_Tick(object sender, ElapsedEventArgs e)
{
//Gotta do some stuff now that i got a new token!
//Maybe the token auto refreshes?
logger.Info("Timer Old Token {0}", authlink.FirebaseToken);
//await authlink.RefreshUserDetails();
//logger.Info("new Token {0}", authlink.FirebaseToken);
//tokenTimer.Stop();
//tokenTimer.Interval = (authlink.ExpiresIn - 600) * 1000; //Set the token to refresh 10 minutes before it has to.
//tokenTimer.Interval = 10000;
//tokenTimer.Start();
}
}
}