我正在开发一个 Multi-Tenancy 网络应用程序来管理用户的邮件、联系人和日历。
在 AzureAd 管理门户上,我将我的应用程序注册为 Multi-Tenancy ,并设法为租户内外的人员获取 OAuth token ,在查询身份验证代码和 token 端点时将 tennantId 替换为“common”。
现在,我想访问已登录并同意授予我的应用程序权限的人员的日历、邮件和联系人信息。
我从简单开始,通过查询用户的基本用户信息inside tenancy,如下所示:
获取 https://graph.windows.net/-tennantId-/me?api-version=2013-11-08 或者 获取 https://graph.windows.net/-tennantId-/users/myAdress@company.com?api-version=2013-11-08 {headers: {Authorization: "Bearer -accessToken-"}}
有效!
现在,我如何才能访问不在我的租赁范围内的用户的信息?我试过了
获取 https://graph.windows.net/-tennantId-/me?api-version=2013-11-08
获取 https://graph.windows.net/-tennantId-/users/address@outside.com?api-version=2013-11-08
获取 https://graph.windows.net/common/me?api-version=2013-11-08
获取 https://graph.windows.net/common/users/address@outside.com?api-version=2013-11-08 ,
我总是以 400 错误告终: {"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"请求 url 中的域名无效。"}}}
知道我做错了什么吗?
最佳答案
啊啊啊!
如果您使用 OAuth 开发 Multi-Tenancy 应用程序,则在与 Graph API 对话时忘记使用您的租户 ID!
当为租户内外的用户请求 token 时,相当于“common”的是...“myorganization”!
这会起作用:
https://graph.windows.net/myorganisation/me?api-version=2013-11-08
哦,很明显是written in the doc ,但是……但是……微软!!!
关于oauth - Microsoft Graph API 访问租户外用户的基本信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30811188/