我正在尝试使用 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。
当您使用个人 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
现在,我使用此代码通过 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
回复:
当我使用此令牌调用 API 时,我成功收到如下消息:
GET https://graph.microsoft.com/v1.0/me/messages
回复:
请注意,默认情况下您只会在 API 响应中收到 10 条消息。要获取更多信息,请在 API 调用中使用
$top
查询参数,通过根据您的需求修改页面大小来获取所有消息:
GET https://graph.microsoft.com/v1.0/me/messages?$top=100