Django with Microsoft API 365服务发现

2024-10-03 11:17:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个Django应用程序,可以使用microsoft365帐户对用户进行身份验证,我在Github上找到了这个项目:https://github.com/jasonjoh/pythoncontacts

我按照文档进行了操作,然后我得到了一个提示,进入了Microsoft帐户登录页面,在那里我同意使用Azure AD应用程序。在

在阅读了代码之后,我了解到Django应用程序正在尝试获取位于:https://api.office.com/discovery/v1.0/me/services的可用服务

问题是链接给了我这个错误:

{"error":{"code":"-2147024891, System.UnauthorizedAccessException","message":"Access denied. You do not have permission to perform this action or access this resource."}}

我不知道这个问题是由于Azure AD应用程序权限还是由于代码。在

我的理解是Django应用程序正在请求azuread授权端点登录。这个端点返回登录窗口,在身份验证之后,我得到授权代码。有了它,我应该兑换授权代码并在azuread令牌端点获取访问令牌,以便能够使用它调用office365 API。在

这是我的应用在Azure AD中的权限 ------------


Tags: django代码用户httpscom身份验证应用程序权限
3条回答

要访问发现服务,您需要获得一个resource=https://api.office.com/discovery/的令牌

现在,如果您正在使用新的office365统一API,则不需要使用发现服务,因为所有信息都是从单个端点https://graph.microsoft.com提供的

希望有帮助

您需要向其他应用程序添加以下权限:“Office 365 Exchange Online”。在

如果看不到,请确保在Azure和Office 365中有付费订阅。如果你在Azure中只有一个订阅,你会看到“默认目录”,它不会显示上面命名的应用程序。在

希望有帮助:)

rGonzalez是正确的。代码示例使用Office365统一API发布(公开预览)之前生产中的Office 365 API。您有两种选择: -选项1(推荐):使用Office 365统一API。您将需要修改应用程序以跳过调用发现API的步骤,而是调用端点https://graph.microsoft.com/beta。有关API文档,请参见here。 -选项#2:获取Office 365租户的Exchange订阅,以便在应用程序注册页中看到Office 365 Exchange Online作为选项列出,并选择“读取和写入用户日历”、“以用户身份发送邮件”和“读写用户邮件”作为应用程序的权限。在

另外,在你所附的屏幕截图中,你对你的应用程序没有“读取用户日历”和“读取用户邮件”权限,因为它们已经分别包含在“对用户日历具有完全访问权限”和“对用户邮件的读写访问”权限中。在

相关问题 更多 >