何时使用 MSAL AcquireTokenSilentAsync
When to use MSAL AcquireTokenSilentAsync
我正在为 Xamarin.Forms 使用 MSAl,并在 Xamarin Authorization with Azure AD B2C
上实现了示例
在示例中,AcquireTokenSilentAsync()
-方法从 LoginPage
(视图)的 OnAppearing()
- 方法调用(从 LoginAsync(true) 委托)。登录页面是此示例应用程序的启动页面。
我的问题是,我是否必须在我的逻辑之前在任何视图(或视图模型)中调用 AcquireTokenSilentAsync()
,或者是否足以在我的启动页面上使用它?如果我必须在任何 view/view 模型上使用它,这似乎是一个方面。您是通过使用某种 AOP 模式还是在每个 view/view 模型上真正调用此方法来解决此问题?
我现在在启动时调用 AquireTokenSilentAsync
一次。
他们现在对如何使用它有了很好的解释:
https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/AcquireTokenSilentAsync-using-a-cached-token
Recommended call pattern in public client applications with Msal 2.x
AuthenticationResult result = null;
var accounts = await app.GetAccountsAsync();
try
{
result = await app.AcquireTokenSilentAsync(scopes, accounts.FirstOrDefault());
}
catch (MsalUiRequiredException ex)
{
// A MsalUiRequiredException happened on AcquireTokenSilentAsync.
// This indicates you need to call AcquireTokenAsync to acquire a token
System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}");
try
{
result = await app.AcquireTokenAsync(scopes);
}
catch (MsalException msalex)
{
ResultText.Text = $"Error Acquiring Token:{System.Environment.NewLine}{msalex}";
}
}
catch (Exception ex)
{
ResultText.Text = $"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}";
return;
}
if (result != null)
{
string accessToken = result.AccessToken;
// Use the token
}
我正在为 Xamarin.Forms 使用 MSAl,并在 Xamarin Authorization with Azure AD B2C
上实现了示例在示例中,AcquireTokenSilentAsync()
-方法从 LoginPage
(视图)的 OnAppearing()
- 方法调用(从 LoginAsync(true) 委托)。登录页面是此示例应用程序的启动页面。
我的问题是,我是否必须在我的逻辑之前在任何视图(或视图模型)中调用 AcquireTokenSilentAsync()
,或者是否足以在我的启动页面上使用它?如果我必须在任何 view/view 模型上使用它,这似乎是一个方面。您是通过使用某种 AOP 模式还是在每个 view/view 模型上真正调用此方法来解决此问题?
我现在在启动时调用 AquireTokenSilentAsync
一次。
他们现在对如何使用它有了很好的解释: https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/AcquireTokenSilentAsync-using-a-cached-token
Recommended call pattern in public client applications with Msal 2.x
AuthenticationResult result = null;
var accounts = await app.GetAccountsAsync();
try
{
result = await app.AcquireTokenSilentAsync(scopes, accounts.FirstOrDefault());
}
catch (MsalUiRequiredException ex)
{
// A MsalUiRequiredException happened on AcquireTokenSilentAsync.
// This indicates you need to call AcquireTokenAsync to acquire a token
System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}");
try
{
result = await app.AcquireTokenAsync(scopes);
}
catch (MsalException msalex)
{
ResultText.Text = $"Error Acquiring Token:{System.Environment.NewLine}{msalex}";
}
}
catch (Exception ex)
{
ResultText.Text = $"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}";
return;
}
if (result != null)
{
string accessToken = result.AccessToken;
// Use the token
}