C# AcquireTokenSilent()抛出无法以静默方式获取令牌。调用方法AcquireToken错误

C# AcquireTokenSilent()抛出无法以静默方式获取令牌。调用方法AcquireToken错误,c#,access-token,azure-active-directory,adal,C#,Access Token,Azure Active Directory,Adal,我有一个本机客户端应用程序,我正在尝试使用AcquireTokenSilent(),因此不会提示输入用户凭据。然而,在多次尝试之后,我对问题所在一无所知 我已经创建了自己的PrivateTokeCacheClass,它是从TokenCache类继承的 这是我的密码: public class PrivateTokenCacheClass : TokenCache { public string CacheFilePath = @"C:\Users\blahblah\De

我有一个本机客户端应用程序,我正在尝试使用AcquireTokenSilent(),因此不会提示输入用户凭据。然而,在多次尝试之后,我对问题所在一无所知

我已经创建了自己的PrivateTokeCacheClass,它是从TokenCache类继承的

这是我的密码:

 public class PrivateTokenCacheClass : TokenCache
    {
        public string CacheFilePath = @"C:\Users\blahblah\Desktop\token.txt";

        public AADTokenCache()
        {
            CacheFilePath = @"C:\Users\blahblah\Desktop\token.txt";
            this.BeforeAccess = BeforeAccessNotification;
            this.AfterAccess = AfterAccessNotification;
        }

        public void BeforeAccessNotification(TokenCacheNotificationArgs args)
        {
            this.Deserialize(File.ReadAllBytes(CacheFilePath));            
        }
        public void AfterAccessNotification(TokenCacheNotificationArgs args)
        {
            if(this.HasStateChanged)
            {
                File.WriteAllBytes(CacheFilePath, this.Serialize());
                this.HasStateChanged = false;
            }            
        }

    }
现在,在AcquireToken方法中,我执行以下操作:

 private static string acquireAuthToken()
        {
            PrivateTokenCacheClass pvtCache = new PrivateTokenCacheClass();

           AuthenticationContext authContext = new AuthenticationContext(authority, pvtCache);

            string token = authContext.AcquireTokenSilent(resourceUri, clientID, UserIdentifier.AnyUser).AccessToken.ToString();
        }
token.txt文件包含我以前(10分钟前)使用此调用获得的令牌(纯文本):

string token = authContext.AcquireToken(resourceUri, clientID, redirectUri).AccessToken.ToString();

任何帮助都将不胜感激

您应该能够枚举缓存(ReadAll方法),并将其内容与传递给AcquireTokenSilent的参数进行比较。如果存在轻微的不匹配,您将无法取回令牌