Asp.net mvc AcquireTokenSilentAsync无法对用户进行身份验证
我正在尝试获取静默令牌请求,以初始化“Microsoft Graph SDK ASPNET Connect”项目中的Asp.net mvc AcquireTokenSilentAsync无法对用户进行身份验证,asp.net-mvc,microsoft-graph-api,msal,Asp.net Mvc,Microsoft Graph Api,Msal,我正在尝试获取静默令牌请求,以初始化“Microsoft Graph SDK ASPNET Connect”项目中的SecretentialClientApp对象,如中所述 通过我的代码镜像上述示例,我希望我的调用将返回一个成功的结果,并访问 var result = await cca.AcquireTokenSilentAsync(graphScopes, cca.Users.First()); return result.AccessToken; 但是,我得到一个错误,它说用户需要进行
SecretentialClientApp
对象,如中所述
通过我的代码镜像上述示例,我希望我的调用将返回一个成功的结果,并访问
var result = await cca.AcquireTokenSilentAsync(graphScopes, cca.Users.First());
return result.AccessToken;
但是,我得到一个错误,它说用户需要进行身份验证。我不确定我在这些示例中遗漏了什么。如果该用户已经有一个缓存令牌,其中包含您请求的作用域,则只能以静默方式获取该令牌(它可以有更多,但至少需要有您请求的) 这就是为什么
AcquireTokenSilentAsync
应始终包装在Try/Catch块中的原因。如果找不到匹配的令牌,则需要启动一个交互式流。以下是来自以下方面的示例:
对此进行了一些调整,我就能够使我的工作流程达到预期的行为。谢谢Marc,如果是aspnetcore web应用程序,你会怎么做?
AuthenticationResult result = null;
try
{
result = await app.AcquireTokenSilentAsync(scopes, app.Users.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
}