【发布时间】:2021-01-27 04:10:21
【问题描述】:
我创建了一个 C# 控制台应用程序来使用 Microsoft Graph API 发送电子邮件。在向我的应用程序添加 Mail.Send Delegated Permission 时,我看到以下异常:
我已启用“允许公共客户流”:
应用程序具有 Mail.Send 权限:
这是我的代码:
public async Task SendMail(string subject, string content, string recipientAddress)
{
var publicClientApplication = PublicClientApplicationBuilder
.Create("<client id>")
.WithTenantId("<tenant id>")
.Build();
string[] scopes = new string[] { "mail.send" };
UsernamePasswordProvider authProvider = new UsernamePasswordProvider(publicClientApplication, scopes);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
var message = new Message
{
Subject = subject,
Body = new ItemBody
{
ContentType = BodyType.Text,
Content = content
},
ToRecipients = new List<Recipient>()
{
new Recipient
{
EmailAddress = new EmailAddress { Address = recipientAddress }
}
}
};
var securePassword = new SecureString();
foreach (char c in _senderPassword)
securePassword.AppendChar(c);
var saveToSentItems = true;
await graphClient.Me
.SendMail(message, saveToSentItems)
.Request().WithUsernamePassword(_senderAddress, securePassword)
.PostAsync();
}
我错过了什么?
【问题讨论】:
-
请检查您的访问令牌是否在jwt.ms 上具有权限。
-
是的,按照 shiva 的建议,解析您的令牌并提供屏幕截图。
-
您能告诉我如何检查吗?
-
从日志中我发现产生的错误消息不是因为 sendMail API,而是看起来你在代码中点击 /groups/{groupid}。如果您想获取群组详细信息,您需要添加 Group.Read.All 或 Directory.Read.All。
-
我添加了 Group.Read.All 和 Directory.Read.All 权限。我仍然看到同样的错误。
标签: c# azure-active-directory microsoft-graph-api