我遵循了以下步骤:
Grant admin consent for {my org}
。在我的代码(.net核心控制台应用程序)中,我编写了以下内容:
var clientId = "23fff856-***";
var tenantId = "6f541345-***";
var clientSecret = "_Sir**(";
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId(tenantId)
.WithClientSecret(clientSecret)
.Build();
var authProvider = new ClientCredentialProvider(confidentialClientApplication);
var graphClient = new GraphServiceClient(authProvider);
var message = new Message
{
Subject = "my subject",
Body = new ItemBody {ContentType = BodyType.Text, Content = "body"},
ToRecipients = new List<Recipient>
{
new Recipient
{
EmailAddress = new EmailAddress{Address = "foo@gmail.com"}
}
}
};
await GraphClient.Me
.SendMail(message, true)
.Request()
.PostAsync();
这会导致错误:
"code":"NoPermissionsInAccessToken",
"message":"The token contains no permissions, or permissions can not be understood."
我已授予所有权限。我想念什么?
答案 0 :(得分:1)
由于使用的是客户端凭据流,因此需要在Azure门户上使用应用程序权限。请添加Mail.Send Application权限,它将起作用。
删除“我”并添加Users ['Userid'],因为“我”谈论的是已登录的用户,我们在这里没有任何用户。
Userid是Azure AD中的用户对象ID。您也可以使用userPrincipalname进行测试。您可以使用/users endpoint来获取用户的用户ID,并使用displayname或userPrincipalname进行过滤。