当前位置: 首页 > 知识库问答 >
问题:

无法以静默方式获取令牌,因为在缓存中找不到令牌。调用方法AcquireToken

秦城
2023-03-14

我使用这个代码示例:https://github.com/azure-samples/active-directory-dotnet-graphapi-web,我知道这个代码示例使用的是客户端库,但是如果我想要执行查询(使用httpclient)直接使用api调用,我使用下面的代码从缓存中获取访问令牌:

 string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value; 
 AuthenticationContext authContext = new AuthenticationContext(Startup.Authority, new NaiveSessionCache(userObjectID)); 
 ClientCredential credential = new ClientCredential(clientId, appKey); 
 var result = await authContext.AcquireTokenSilentAsync(resource, credential, new UserIdentifier(userObjectID, UserIdentifierType.UniqueId));

共有1个答案

葛烨
2023-03-14

我可以重现你的错误。根据此链接,使用AcquireTokenSilentAsync(使用NaiveSessionCache)时代码示例似乎不起作用,请尝试将NaiveSessionCache.cs修改为此。

请告诉我它是否有用。

 类似资料:
  • 用户授权Google Calendar后,NodeJS服务将代码、AccessToken和RefreshToken保存到存储中。 我也尝试将代码交换为新的令牌,但没有帮助 400错误的请求响应:{“error”:“invalid_grant”,“error_description”:“auth代码格式错误”} 尝试使用Calendar.NewService访问 }

  • 目前访问类型处于联机状态。当我需要访问驱动器上的文件/文件夹时,我将浏览器重定向到Google URL并获得访问代码: 一切运转良好!但我只需要第一次重定向。 当我谷歌时,在google Drive API文档中,我发现我可以通过浏览器重定向获得刷新令牌,并将其保存在数据库中。(换句话说,我可以使用脱机访问)。 而且每次当我需要从google drive读取数据时,我使用刷新令牌获得访问令牌,而无

  • 我正在我的应用程序中嵌入用于推送通知的GCM。我面临一个非常奇怪的问题,第一次运行时我无法获得GCM注册令牌,但当你第二次运行我的应用程序时,你将在控制台上打印注册ID。我不知道我在干什么。以下是我迄今为止所做的工作。 这是我的onCreate()方法,我想在其中打印GCM注册表: 执行以下代码: 通过以下方法将GCM_regId发送到服务器,如本教程所示: 我不这么认为,这里需要gcminent

  • 我正在尝试获取一个令牌,以调用microsoft graph,并使用Angular检索已登录用户的个人资料图片。我正在使用“@azure/msal-angular”库通过azure AD进行身份验证。我有Microsoft Graph的API权限设置-User.Read在我的应用程序中,但是,我总是收到一个错误,我的应用程序需要只有管理员才能授予的访问权限。我的假设是,我需要创建一个客户端机密,但

  • 我正在学习一个教程,即http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/ 但我无法获取令牌,我的服务类也无法工作。请帮忙

  • 我正在尝试从应用程序服务中获取Google的刷新令牌,但我不能。 日志说 2016-11-04T00:04:25 PID[500]收到的详细请求:获取https://noteappsvr.azurewebsites.net/.auth/login/google?access _ type = offline 2016-11-04t 00:04:25 PID[500]从https://account