【发布时间】:2023-03-03 13:47:02
【问题描述】:
我们正在尝试通过 beta API 上的user_findrooms 获取组织中的房间列表。
我正在使用php-connect-sample,并在此处创建issue 后被定向到此处。
我们的应用程序已注册,并具有所需的权限。用户已登录并正确重定向。我可以成功获取/me端点
当我尝试像这样获取/me/findRooms 端点时:
$graph = new Graph();
$graph->setApiVersion('beta');
$graph->setAccessToken($_SESSION['access_token']);
$rooms = $graph->createRequest("get", "/me/findRooms")
->setReturnType(Model\EmailAddress::class)
->execute();
然后我得到以下错误:
客户端错误:GET https://graph.microsoft.com/beta/me/findRooms 导致 403 禁止响应:{“错误”:{“代码”: "ErrorAccessDenied", "message": "访问被拒绝。检查凭据 然后再试一次。",(截断...)
看来是权限错误。
我们的应用拥有以下 Graph 权限:
委派权限:User.ReadBasic.All 和 User.Read.All
应用程序权限:Calendars.ReadWrite 和 User.Read.All
访问/me/findRooms需要哪些额外权限?
【问题讨论】:
-
如果您只是在用户在场的情况下运行它,则无需指定应用权限。看起来您定义的委派权限足以查询 beta 端点上的房间,但还有一些其他的身份验证问题正在发生。有关其他上下文:您是否使用AAD V2 auth?另外,如果你decode your token,你在'scp'集合中看到了什么?
-
感谢@DmitryPimenov 的回复 是的,我正在使用 Azure AD v2.0 端点获取 oauth 令牌当我解码令牌时,它在 scp 下包含以下内容:
"Calendars.ReadWrite User.Read"