如何从多个O365用户获取日历事件?存储AccessToken替代Me可行吗?
问题解答
1. 关于存储AccessToken替代Me的可行性
可以这么做,但有几个关键事项必须注意:
- AccessToken有效期很短(通常1小时),所以不能只存AccessToken,必须同时存储RefreshToken(长期有效,除非用户主动撤销应用授权),定期用RefreshToken调用微软的令牌刷新接口获取新的AccessToken,否则过期后无法再调用API。
- 存储AccessToken和RefreshToken时,必须做加密处理,不能明文保存在数据库里,避免用户敏感信息泄露。
- 当使用某用户的AccessToken发起请求时,
/me/events本身就会对应该用户的日历事件,因为AccessToken已经和用户身份绑定。你也可以替换成/users/{用户ID}/events,但前提是该AccessToken具备访问对应用户日历的权限(用户授权的委派权限下,/me和/users/{自己的ID}效果一致)。
2. Graph API请求所需的请求头参数
调用https://graph.microsoft.com/v1.0/users/me/events?$top=173这个接口时,核心请求头参数有两个:
- Authorization:必填,格式为
Bearer {你的用户AccessToken},用来验证身份,没有这个会返回401未授权错误。 - Content-Type:必填,值为
application/json,指定请求和响应的数据格式为JSON。
另外还有可选的实用参数:
- Prefer:比如设置
Prefer: odata.maxpagesize=50,用来控制每页返回的事件数量,配合$top使用可以更灵活处理分页(如果用户事件超过设定的数量,API会返回分页令牌,需要后续请求获取剩余数据)。
内容的提问来源于stack exchange,提问作者Mads
相关产品推荐
相关产品推荐

