调用Microsoft Graph API遇Bad gRPC response 401错误求助
问题详情
尝试通过Python的msal库获取访问令牌,调用Microsoft Graph API实现自动删除Microsoft Bookings约会的功能。该令牌获取方式此前可正常访问组织IMAP邮箱,且Azure应用已配置BookingsAppointment.ReadWrite.All权限(符合官方文档要求)。执行代码后返回错误:
{"error":{"code":"UnknownError","message":"{\"error\":{\"message\":\"Bad gRPC response. HTTP status code: 401\",\"code\":\"Unauthorized\"}}","innerError":{"date":"2023-04-28T10:48:01","request-id":"ab1a2ce6-e8ce-4ad1-8950-02d4183a0fab","client-request-id":"ab1a2ce6-e8ce-4ad1-8950-02d4183a0fab"}}}
已核对Azure应用凭据、调整请求头,但问题仍未解决。
排查与解决建议
- 检查访问令牌的权限范围:解析获取到的访问令牌,确认其中包含
BookingsAppointment.ReadWrite.All对应的权限标识,避免请求令牌时未指定正确的scope参数。 - 确认请求端点正确性:确保删除请求使用的是正确的Graph API端点,例如
DELETE /bookingBusinesses/{bookingBusinessId}/appointments/{id},检查路径中的bookingBusinessId和约会ID是否准确无误。 - 验证应用权限的授予状态:在Azure门户中确认
BookingsAppointment.ReadWrite.All权限已完成管理员授予操作,而非仅添加权限但未生效。 - 检查令牌受众:确认访问令牌的
aud字段值为https://graph.microsoft.com,避免因受众不匹配导致身份验证失败。 - 切换权限类型测试:若当前使用应用权限,可临时改用委托权限(通过用户登录流程获取令牌),排查是否为应用权限配置层面的问题。
内容的提问来源于stack exchange,提问作者lignumai
相关产品推荐
相关产品推荐

