public async Task <TokenCacheInfo> GetTokenByResource(string resource) { var cacheInfo = await GetRecentToken(resource); if (cacheInfo != null) { return(cacheInfo); } cacheInfo = await GetToken(null, null); var tokenCache = TokenStorage.GetCache(); TokenCacheInfo found; if (tokenCache.TryGetValue(cacheInfo.TenantId, resource, out found)) { cacheInfo = found; } else { cacheInfo = await GetAuthorizationResult(tokenCache, tenantId : cacheInfo.TenantId, user : cacheInfo.DisplayableId, resource : resource); this.TokenStorage.SaveCache(tokenCache); } this.TokenStorage.SaveRecentToken(cacheInfo, resource); return(cacheInfo); }