我需要订阅 Microsoft 365 才能在 Python 中使用 Outlook 的 Graph API 吗?

问题描述 投票:0回答:1

我正在尝试使用 Graph API 从 Outlook 获取所有邮件,但我陷入了这个错误

我正在使用访问令牌的委托流程 我将此端点称为“https://login.microsoftonline.com/{{TenantID}}/oauth2/v2.0/token”以获取访问令牌

AuthURl:'https://login.microsoftonline.com/{{TenantID}}/oauth2/v2.0/authorize'

访问令牌 URL:'https://login.microsoftonline.com/common/oauth2/v2.0/token'

我能够获得访问令牌,但是当我尝试使用 accesstoken 调用此端点时 'https://graph.microsoft.com/v1.0/me/messages' 它给了我这个错误

{"error":{"code":"OrganizationFromTenantGuidNotFound","message":"The tenant for tenant guid
'28331ffe-5018-46af-9415-cbcd9ac32329' does not
exist.","innerError":{"oAuthEventOperationId":"84f7039d-34b8-4e17-a66a-2c672f1a1468","oAuthEventcV":"/GzDJG2u4Bnxk14D+fZR+w.1.1","errorUrl":"https://aka.ms/autherrors#error-InvalidTenant","requestId":"ffc2a401-b871-4aa9-b1ea-3ce5739e07c8","date":"2024-06-14T06:29:26"}}}

它在图形浏览器中工作正常,但在 API 中则不然

据我研究,它说我需要具有活动订阅的 Microsoft 365。

python azure microsoft-graph-api office365
1个回答
0
投票

当您使用个人 Microsoft 帐户登录时,在授权端点中使用 “租户 ID” 时,发生了错误。要解决错误,请使用

/common
端点进行授权请求和令牌生成。

就我而言,我在浏览器中运行了以下授权请求,并在使用个人 Microsoft 帐户登录后成功获得了 code 值:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
?client_id=appId
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=Mail.Read
&state=12345

enter image description here

现在,我使用此代码通过 Postman 使用授权代码流生成访问令牌:

POST https://login.microsoftonline.com/common/oauth2/v2.0/token
grant_type:authorization_code
client_id:appId
client_secret:secret
scope:Mail.Read
code:code
redirect_uri: https://jwt.ms

回复:

enter image description here

当我使用此令牌调用 API 时,我成功收到如下消息:

GET https://graph.microsoft.com/v1.0/me/messages

回复:

enter image description here

请注意,默认情况下您只会在 API 响应中收到 10 条消息。要获取更多信息,请在 API 调用中使用

$top
查询参数,通过根据您的需求修改页面大小来获取所有消息:

GET https://graph.microsoft.com/v1.0/me/messages?$top=100

参考: 列出消息 - Microsoft Graph

© www.soinside.com 2019 - 2024. All rights reserved.