我使用Azure Active Directory为我的应用程序提供对Microsoft Graph API的访问权限.
当我更改权限(例如,对各种类型的数据进行读/写访问)时,我注意到保存更改的时间以及我能够通过API访问新数据时的延迟.但是,我注意到,经过一段时间我的API调用开始工作.我的问题是
>这是预期的行为吗?
>是否有文档可以解释每个Microsoft Graph API请求需要哪些权限?
请注意,在进行相关API请求之前,我在更改每个权限后请求新令牌.
解决方法
当您更改范围时(如果使用Azure来管理自动化),您必须请求用户同意.确保能够使用PromptBehavior.Always参数“一次”调用ADAL AcquireTocken方法.
我认为这足以刷新您的同意并使您的新示波器可用.
我认为这足以刷新您的同意并使您的新示波器可用.
这是我使用的宏代码:
if (mustRefreshBecauseScopesHasChanged) { authResult = await authContext.AcquireTokenAsync(GraphResourceId,ClientId,AppRedirectURI,PromptBehavior.Always); } else { authResult = await authContext.AcquireTokenSilentAsync(GraphResourceId,ClientId); if (authResult.Status != AuthenticationStatus.Success && authResult.Error == "Failed_to_acquire_token_silently") authResult = await authContext.AcquireTokenAsync(GraphResourceId,PromptBehavior.Auto); } if (authResult.Status != AuthenticationStatus.Success) { if (authResult.Error == "authentication_canceled") { // The user cancelled the sign-in,no need to display a message. } else { MessageDialog dialog = new MessageDialog(string.Format("If the error continues,please contact your administrator.\n\nError: {0}\n\n Error Description:\n\n{1}",authResult.Error,authResult.ErrorDescription),"Sorry,an error occurred while signing you in."); await dialog.ShowAsync(); } }
对于范围权限别名,您可以在此处找到它们:
http://graph.microsoft.io/en-us/docs/authorization/permission_scopes