C# AdalSilentTokenAcquisitionException尝试在c中获取令牌时发生#
我正试图使用C# AdalSilentTokenAcquisitionException尝试在c中获取令牌时发生#,c#,azure-active-directory,C#,Azure Active Directory,我正试图使用acquireTokenSilentAsync连接到我的azure应用程序,但我遇到一个异常,代码如下: public class Oauth { public const string OAuthHeader = "Authorization"; public static String GetUserAccessTokenAsync() { AuthenticationResul
acquireTokenSilentAsync
连接到我的azure应用程序,但我遇到一个异常,代码如下:
public class Oauth
{
public const string OAuthHeader = "Authorization";
public static String GetUserAccessTokenAsync()
{
AuthenticationResult result = null;
string aadTenant = TestConfiguration.Default.ActiveDirectoryTenant;
string aadClientAppId = TestConfiguration.Default.ActiveDirectoryClientAppId;
string aadResource = TestConfiguration.Default.ActiveDirectoryResource;
var authenticationContext = new AuthenticationContext(aadTenant, TokenCache.DefaultShared);
result = authenticationContext.AcquireTokenSilentAsync(aadResource, aadClientAppId).Result;
if (result != null)
{
var accessToken = result.AccessToken;
// Use the token
return accessToken;
}
else
{
return "";
}
}
}
我在这一行下面遇到了一个错误:
result = authenticationContext.AcquireTokenSilentAsync(aadResource, aadClientAppId).Result;
AdalSilentTokenAcquisitionException:无法以静默方式获取令牌,因为在缓存中找不到令牌。调用方法AcquireToken
怎么了?当您尝试以静默方式获取令牌时,它将从令牌缓存中获取令牌或以静默方式使用refreshToken。因此,当缓存中没有令牌时,AdalException返回。你可以参考这个 注意,
AcquireTokenSilent
不需要在客户端中调用
凭据流(当应用程序在没有用户的情况下获取令牌时,
但以自己的名义)
请注意AcquireTokenSilent
可能会因以下几种原因而失败,例如
缓存不包含用户的令牌,或者该令牌已过期
并且无法刷新
try
{
result = await ac.AcquireTokenSilentAsync(resource, clientId);
}
catch (AdalException adalException)
{
if (adalException.ErrorCode == AdalError.FailedToAcquireTokenSilently
|| adalException.ErrorCode == AdalError.InteractionRequired)
{
result = await ac.AcquireTokenAsync(resource, clientId, redirectUri,
new PlatformParameters(PromptBehavior.Auto));
}
}