Lau*_*ema 7 azure-active-directory microsoft-graph
在Graph API中使用扩展时:
graphUser = graphClient.Users.Request().AddAsync(graphUser).Result;
OpenTypeExtension newExtension = new OpenTypeExtension()
{
ExtensionName = "CustomName",
AdditionalData = new Dictionary<string, object>
{ { "CustomID", user.CustomID }
}
};
graphClient.Users[graphUser.UserPrincipalName]
.Extensions
.Request()
.AddAsync(newExtension)
.Wait();
Run Code Online (Sandbox Code Playgroud)
我随机得到这些错误:
Code: AccessDenied
Message: Access Denied
Run Code Online (Sandbox Code Playgroud)
有时候它有效,有时则不然.我似乎找不到相关性.当我逐步调试调试器中的代码时,如果我不间断地运行它,它会更频繁地工作.但是,如果我在行之间添加睡眠(以解决处理延迟),则无法解决问题.
该应用程序具有访问API所需的所有权限.
问题不仅仅在于POST,而且还在GET下面的代码示例中所示,导致相同的错误.
User user = graphClient.Users[userName]
.Request()
.GetAsync()
.Result;
user.Extensions = graphClient.Users[userName]
.Extensions
.Request()
.GetAsync()
.Result;
Run Code Online (Sandbox Code Playgroud)
有没有人有这个问题的经验?提前致谢!
编辑:
我发现一旦错误开始显示,就需要删除用户.一个用户的错误并不一定意味着另一个用户的错误.
编辑2:
我也在GitHub上发布了这个问题.在这里您可以找到有关此问题的更多信息.它现在被标记为一个错误.
事实证明,用户主体名称是缓存的引用。由于我正在运行测试,这意味着要多次重新创建相同的测试用户,因此引用 UPN 指向旧的用户对象,从而导致访问被拒绝错误。
通过使用对象的 Id 可以避免这个问题,如下所示:
graphClient.Users[graphUser.Id]
.Extensions
.Request()
.AddAsync(newExtension)
.Wait();
Run Code Online (Sandbox Code Playgroud)
我相信团队会修复参考错误,但我当然不能代表他们说话。无论哪种情况,我都建议使用 Id 属性来确定。
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |