在Azure移动应用程序的后端,我使用Azure的内置身份验证服务在用户登录到我的应用程序时获取访问令牌通过Microsoft帐户。我正在成功获取该令牌。通过Azure的内置应用服务身份验证获得的令牌与Microsoft Graph无效的身份验证令牌错误
但是,我然后尝试呼叫Microsoft Graph以获取经过身份验证的用户的姓名,电子邮件和ID。 Azure的日志流显示我这个错误:
MicrosoftGraphServiceException:
Code: InvalidAuthenticationToken
Message: CompactToken parsing failed with error code: 8004920A
这里是适用的代码:
[MobileAppController]
public class MicrosoftAccountController : ApiController
{
MicrosoftAccountCredentials credentials;
// GET api/<controller>
public async Task<DataObjects.User> Get()
{
if (credentials == null)
{
credentials =
await this.User.GetAppServiceIdentityAsync<MicrosoftAccountCredentials>(this.Request);
var accessToken = credentials.AccessToken;
}
GraphServiceClient graphClient =
new Microsoft.Graph.GraphServiceClient(new DelegateAuthenticationProvider((requestMessage) =>
{
requestMessage.Headers.Authorization =
new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
return Task.FromResult(0);
}));
Microsoft.Graph.User graphuser = await graphClient.Me.Request().GetAsync();
}
感谢您的帮助!
从您的问题中不清楚您要求的范围。你可以添加一个你回来的JWT令牌的例子吗? –
我在诊断日志流中显示:2017-11-19T22:34:03 PID [11148]详细调用外部HTTP端点GET https://apis.live.net/v5.0/me。 2017-11-19T22:34:04 PID [11148]信息登录已完成'我删除了用户的电子邮件'。提供者:'microsoftaccount'。 2017-11-19T22:34:04 PID [11148]为站点'mattsapp.azurewebsites.net'详细写'AppServiceAuthSession'cookie。长度:492. – Matt
https://mattsapp.azurewebsites.net/.auth/login/done#token= – Matt