我尝试使用列表消息API(https://docs.microsoft.com/en-us/graph/api/user-list-messages?view=graph-rest-1.0&tabs=http)获取用户的邮件信息。
我正在遵循https://docs.microsoft.com/en-us/graph/auth-v2-service中所述的说明。
我注册了我的应用程序,配置了“应用程序权限”以能够使用列表消息,并征得管理员的同意使用
// Line breaks are for legibility only.
GET https://login.microsoftonline.com/{MY_TENANT_NAME}/adminconsent
?client_id=MY_APP_CLIENT_ID
&state=12345
&redirect_uri=https://localhost/myapp/permissions
并提供我的凭据,我可以获得admin_consent = True网址。然后我可以使用
获得访问令牌// Line breaks are for legibility only.
POST https://login.microsoftonline.com/{MY_TENANT_NAME}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
client_id=MY_APP_CLIENT_ID
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret=MY_APP_SECRET_KEY
&grant_type=client_credentials
我有一个有效的访问令牌。我可以看到我的用户正在呼叫https://graph.microsoft.com/v1.0/users。
但是,当我致电https://graph.microsoft.com/v1.0/users/ {MY_USER_ID} /消息时,我收到一条错误消息。
{
"error": {
"code": "OrganizationFromTenantGuidNotFound",
"message": "The tenant for tenant guid '2a862810-93dc-4096-a6b0-dda413670497' does not exist.",
"innerError": {
"request-id": "ba60c495-742b-4655-be74-fe8802427756",
"date": "2020-04-11T19:20:32"
}
}
}
有趣的是,当我使用https://developer.microsoft.com/en-us/graph/graph-explorer时,我可以收到用户的电子邮件。我已经检查了查询,但似乎没有任何区别。我在调查时看到的唯一区别AAD->企业应用程序->权限,我可以在Graph Explorer应用程序中看到用户同意权限,但在我的应用程序中看不到。
奇怪的是,它抱怨您的tenantID。但是,在AAD注册的应用程序下,
https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps
检查您是否设置了Mail.Read *权限。
您是否像广告应用一样使用正确的应用ID,所以ID分为以下三种:应用ID,对象ID和目录ID。在这里,您必须使用应用程序ID。
您还可以验证访问令牌中的AppID
此租户中有多少个活动目录环境?您确定要在正确的租户中创建Azure AD应用吗?
我相信您可能使用了错误的房客ID。用户ID在该租户中存在,但邮箱不存在。
在aad.portal.azure.com/#blade/Microsoft_AAD_IAM/…中,应在oauth URL中使用租户id属性-login.microsoftonline.com/${tenantId}
仔细检查您使用的是正确的。