microsoft-graph-api - Microsoft Graph Api - 订阅后出现内部服务器错误
问题描述
我正在尝试通过https://graph.microsoft.com/v1.0/subscriptions端点将订阅请求发布到图形 api。但是,我不断收到此错误:
"code": "ExtensionError",
"message": "Operation: Create; Exception: [Status Code: InternalServerError; Reason: Expected 1 response for tenant lookup for tenant id ... but received 0]
我的请求:
{
"changeType": "created,updated",
"notificationUrl": "https://.../notification",
"resource": "communications/callRecords",
"expirationDateTime": "2021-03-24T18:23:45.9356913Z",
"clientState": "secretClientValue"
}
我能够以我的租户 ID 作为 grant_type = client_credentials (OAuth 2.0 客户端凭据授予流程)获取令牌。尽管令牌创建成功,但我不明白为什么我的租户在订阅时会出错。我究竟做错了什么?请帮忙!
谢谢。
更新: 我的应用程序的权限:
- Calendars.ReadWrite 应用程序
- CallRecords.Read.All 应用程序
- Directory.ReadWrite.All 应用程序
- OnlineMeetings.Read.All 应用程序
授予所有人管理员同意。
解决方案
我假设既然您说“grant_type = client_credentials(OAuth 2.0 客户端凭据授予流程)”,那么您正在使用 Delegated CallRecords.Read.All 权限。
如果您阅读此页面,它会说 CallRecord 订阅仅支持 Application CallRecords.Read.All 权限。因此,您必须使用应用程序客户端进行身份验证,而不是客户端凭据。
===== 更新 =====
根据评论,我可以猜出我可能存在的一些问题:
由于“免费”的 azure 帐户没有团队许可证,因此有人猜测订阅调用会因某些原因而失败。这可能就是为什么它会因为奇怪的消息而失败。
另一种设置是您的 azure 应用程序位于“免费”帐户中,并且订阅适用于另一个租户(例如您的工作租户)。为此,您需要:
- 天蓝色应用程序设置为多租户
- 管理员在工作租户中获得管理员同意
- 在生成令牌调用中,“myTenantId”必须是工作租户的租户 ID
推荐阅读
- skype - 在 Skype 中获取用户在线状态
- string - Vuejs过滤器字符串替换
- nginx - Routing based on request headers using AWS Load Balancer or nginx
- python - 在 Python:Tkinter 中保存没有 FileDialog 的文件
- java - Java Selenium 测试输入与消失的占位符
- javascript - Javascript - 只接受小数的某些值
- java - 在jsp和mysql中创建用户的层次树视图
- macos - Hammerspoon:使用中的过滤器应用
- python - 如何将算法转换为函数式编程?
- azure - 重启 Azure 应用服务时 dotnet.exe 无法启动