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

时间:2015-05-01 02:24:14

标签: c# access-token azure-active-directory adal

我有一个本机客户端应用程序,我正在尝试使用AcquireTokenSilent(),因此没有提示用户信用。然而,在经过多次尝试之后,我只是迷失了问题所在。

我创建了自己的PrivateTokenCacheClass,它继承自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();

任何帮助都将受到高度赞赏!

0 个答案:

没有答案