Microsoft Graph - 无法 read/write 其他用户的日历
Microsoft Graph - Can't read/write the calendar of other users
我在 Azure 上注册了一个 Web 应用程序,目的是能够读取和写入其他用户的日历。为此,我在 Azure 上为此应用设置了 these permissions。
但是,例如,当我尝试为给定用户创建新事件时,我收到一条错误消息。这是我正在使用的:
端点
https://graph.microsoft.com/v1.0/users/${requester}/calendar/events
HTTP Header
Content-Type application/json
请求Body
{
"subject": "${subject}",
"body": {
"contentType": "HTML",
"content": "${remarks}"
},
"start": {
"dateTime": "${startTime}",
"timeZone": "${timezone}"
},
"end": {
"dateTime": "${endTime}",
"timeZone": "${timezone}"
},
"location": {
"displayName": "${spaceName}",
"locationEmailAddress": "${spaceEmail}"
},
"attendees": [
{
"emailAddress": {
"address": "${spaceEmail}",
"name": "${spaceName}"
},
"type": "resource"
}
]
}
错误信息
{
"error": {
"code": "ErrorItemNotFound",
"message": "The specified object was not found in the store.",
"innerError": {
"request-id": "XXXXXXXXXXXXXXXX",
"date": "2018-07-11T09:16:19"
}
}
}
有什么我想念的吗?在此先感谢您的帮助!
解决方案更新
我按照 link 中描述的步骤设法解决了问题:
https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service
从您的屏幕截图可以看出您使用了应用程序权限(尽管最好在您的问题中包含此信息):
根据您授予的权限类型,您需要使用适当的流程来获取访问令牌 (on behalf of a user or as a service。对于应用程序权限,您必须使用流程来提供服务,而不是代表用户。
您还可以使用 jwt.io 检查您的令牌并确保其有效负载包含适当的角色。如果不是,很可能你使用了错误的流程。
关于它的过期时间,您可能已经找到有关刷新令牌的信息(for example here)。请记住,它仅适用于代表用户授予的权利。对于没有用户的访问,你应该确保你知道你的令牌何时到期并相应地请求一个新的。
我在 Azure 上注册了一个 Web 应用程序,目的是能够读取和写入其他用户的日历。为此,我在 Azure 上为此应用设置了 these permissions。
但是,例如,当我尝试为给定用户创建新事件时,我收到一条错误消息。这是我正在使用的:
端点
https://graph.microsoft.com/v1.0/users/${requester}/calendar/events
HTTP Header
Content-Type application/json
请求Body
{
"subject": "${subject}",
"body": {
"contentType": "HTML",
"content": "${remarks}"
},
"start": {
"dateTime": "${startTime}",
"timeZone": "${timezone}"
},
"end": {
"dateTime": "${endTime}",
"timeZone": "${timezone}"
},
"location": {
"displayName": "${spaceName}",
"locationEmailAddress": "${spaceEmail}"
},
"attendees": [
{
"emailAddress": {
"address": "${spaceEmail}",
"name": "${spaceName}"
},
"type": "resource"
}
]
}
错误信息
{
"error": {
"code": "ErrorItemNotFound",
"message": "The specified object was not found in the store.",
"innerError": {
"request-id": "XXXXXXXXXXXXXXXX",
"date": "2018-07-11T09:16:19"
}
}
}
有什么我想念的吗?在此先感谢您的帮助!
解决方案更新
我按照 link 中描述的步骤设法解决了问题: https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service
从您的屏幕截图可以看出您使用了应用程序权限(尽管最好在您的问题中包含此信息):
根据您授予的权限类型,您需要使用适当的流程来获取访问令牌 (on behalf of a user or as a service。对于应用程序权限,您必须使用流程来提供服务,而不是代表用户。
您还可以使用 jwt.io 检查您的令牌并确保其有效负载包含适当的角色。如果不是,很可能你使用了错误的流程。
关于它的过期时间,您可能已经找到有关刷新令牌的信息(for example here)。请记住,它仅适用于代表用户授予的权利。对于没有用户的访问,你应该确保你知道你的令牌何时到期并相应地请求一个新的。