diff --git a/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs b/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs index b0f1235..12672ee 100644 --- a/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs +++ b/CommunityToolkit.Authentication.Uwp/WindowsProvider.cs @@ -562,24 +562,37 @@ private async Task> GetWebAccountProvidersAsync() if (_webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Any || _webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Msa) { - providers.Add(await WebAuthenticationCoreManager.FindAccountProviderAsync(MicrosoftProviderId, MicrosoftAccountAuthority)); + await FindAndAddProviderAsync(MicrosoftProviderId, MicrosoftAccountAuthority); } // AAD if (_webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Any || _webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Aad) { - providers.Add(await WebAuthenticationCoreManager.FindAccountProviderAsync(MicrosoftProviderId, AadAuthority)); + await FindAndAddProviderAsync(MicrosoftProviderId, AadAuthority); } // Local if (_webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Any || _webAccountProviderConfig.WebAccountProviderType == WebAccountProviderType.Local) { - providers.Add(await WebAuthenticationCoreManager.FindAccountProviderAsync(LocalProviderId)); + await FindAndAddProviderAsync(LocalProviderId); } return providers; + + async Task FindAndAddProviderAsync( + string webAccountProviderId, + string authority = default) + { + var provider = string.IsNullOrEmpty(authority) + ? await WebAuthenticationCoreManager.FindAccountProviderAsync(webAccountProviderId) + : await WebAuthenticationCoreManager.FindAccountProviderAsync(webAccountProviderId, authority); + if (provider != null) + { + providers.Add(provider); + } + } } } } \ No newline at end of file