public LoopbackAccessTokenProvider(StreamlabsSettings StreamlabsSettings)
        {
            settings         = StreamlabsSettings;
            unitySyncContext = SynchronizationContext.Current;

            accessTokenRefresher         = new AccessTokenRefresher(settings.GenericClientCredentials);
            accessTokenRefresher.OnDone += HandleAccessTokenRefreshed;

            authCodeExchanger         = new AuthCodeExchanger(settings, settings.GenericClientCredentials);
            authCodeExchanger.OnDone += HandleAuthCodeExchanged;
        }
 private void HandleAccessTokenRefreshed(AccessTokenRefresher refresher)
 {
     if (refresher.IsError)
     {
         if (Debug.isDebugBuild)
         {
             var message = "UnityStreamlabs: Failed to refresh access token; executing full auth procedure.";
             if (!string.IsNullOrEmpty(refresher.Error))
             {
                 message += $"\nDetails: {refresher.Error}";
             }
             Debug.Log(message);
         }
         ExecuteFullAuth();
     }
     else
     {
         settings.CachedAccessToken = refresher.AccesToken;
         HandleProvideAccessTokenComplete();
     }
 }