何时使用MSAL AcquireTokenSilentAsync

问题描述 投票:1回答:1

我正在使用MSAl for Xamarin.Forms并在Xamarin Authorization with Azure AD B2C上实现了示例

在样本中,AcquireTokenSilentAsync()-Method是从OnAppearing()-LoginPage的方法(View)调用的(从LoginAsync(true)委托)。登录页面是此示例应用程序的启动页面。

我的问题是,我是否必须在我的逻辑之前在任何视图(或视图模型)中调用AcquireTokenSilentAsync(),或者它是否足以在我的启动页面上使用它?如果我必须在任何视图/视图模型上使用它,这似乎是一个方面。您是通过使用某些AOP模式还是在每个视图/视图模型上调用此方法来解决此问题?

azure xamarin.forms msal
1个回答
1
投票

我现在在启动时调用AquireTokenSilentAsync一次。

他们现在有一个很好的解释如何使用它:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/AcquireTokenSilentAsync-using-a-cached-token

使用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
}
© www.soinside.com 2019 - 2024. All rights reserved.