我有一个在Azure上注册的Web应用程序,目的是能够读取和写入其他用户的日历。为此,我在Azure上为此应用设置了these permissions。
但是,例如,当我尝试为给定用户创建新事件时,会收到错误消息。这是我正在使用的:
端点
root.widthProperty().addListener((o, oldValue, newValue) -> {
double maxWidth = tp.getChildren()
.stream()
.filter(n -> n instanceof Region)
.map(n -> ((Region) n).getWidth())
.max(Double::compareTo)
.orElse(0d);
tp.setPrefColumns(Math.min(tp.getChildren().size(),
Math.max(1, (int) (newValue.doubleValue() / maxWidth))));
});
Stream.iterate(0, i -> i + 1).limit(5).forEach(i -> {
Region r = new Region();
Random random = new Random();
r.setPrefSize(random.nextInt(150) + 50, random.nextInt(150) + 50);
System.out.println(r.getPrefWidth());
System.out.println(r.getPrefHeight());
r.setStyle("-fx-background-color: red; -fx-border-color: blue; -fx-border-width: 1;");
tp.getChildren().add(r);
});
HTTP标头
<!DOCTYPE html>
<html>
<head>
<style>
.triangle-container{
transform: rotate(-90deg);
}
.triangle{
fill: white;
stroke: white;
stroke-width: 1;
filter: drop-shadow(-10px 5px 5px rgba(204,204,204,0.1));
}
</style>
</head>
<body>
<div class="triangle-container">
<svg height="500" width="500">
<polygon points="250,100 100,400 400,400" class="triangle" />
Sorry, your browser does not support inline SVG.
</svg>
</div>
</body>
</html>
请求正文
https://graph.microsoft.com/v1.0/users/${requester}/calendar/events
错误消息
Content-Type application/json
有什么我想念的吗?预先感谢您的帮助!
我设法按照此链接中描述的步骤解决了该问题: https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service
答案 0 :(得分:1)
从屏幕截图中可以看出您使用了应用程序许可(尽管很高兴在您的问题中包含此信息):
根据您所授予的权限类型,您需要使用适当的流程来获取访问令牌(on behalf of a user或as a service。对于应用程序权限,您必须使用流程进行服务,而不是代表用户。
您还可以使用jwt.io检查令牌,并确保其有效载荷包含适当的角色。如果没有,很可能是您使用了不正确的流程。
关于它的到期时间,您可能已经找到有关刷新令牌(for example here)的信息。请记住,它仅适用于代表用户授予的权限。对于没有用户的访问,您应该确保知道令牌的到期时间并相应地请求新的令牌。