问题描述
我正在学习 Microsoft Graph,为此我使用了 Graph Explorer 和 Postman。
使用 Graph Explorer :我使用我的个人用户帐户 (hotmail) 登录。我一连接,就可以看到令牌。奇怪的是,当我在 jwt.io 中复制/粘贴此令牌时,它无法解码。但是我可以执行像 https://graph.microsoft.com/v1.0/me 这样的查询,它会返回我作为用户的一些信息(使用 http 200)。或者这个查询 https://graph.microsoft.com/v1.0/me/sendMail 允许我发送测试并接收测试邮件(使用 http 202)。所有这些请求都是“委托许可”。因此,我通过个人帐户 (hotmail) 使用 Graph Explorer 没有任何问题。
With Postman :这次我将使用“应用程序权限”执行一些测试。我按照以下步骤操作:
在 Azure 门户上
第 1 步:应用注册/新注册/我命名/选择第三个帐户类型(任何组织目录中的帐户和个人 Microsoft 帐户)/点击注册按钮
第 2 步:Api 权限/添加权限/Microsoft Graph/应用程序权限/Mail.Send(以任何用户身份发送邮件)
第 3 步:管理员同意...按钮以激活权限
第 4 步:证书和密码/新客户端密码/输入描述/点击添加按钮
步骤 5:在 Postman 中获取令牌
-
发布
-
- 内容类型:application/x-www-form-urlencoded
-
身体
- client_id:{my-client-id-here}
- client_secret:{my-client-secret-here}
- grant_type:client_credentials
- 范围:https://graph.microsoft.com/.default
-
好的,我得到了一个令牌
当在 jwt.io 中复制/粘贴此令牌时,我看到:
{
"message": {
"subject": "This is my subject","body": {
"contentType": "Text","content": "This is my content"
},"toRecipients": [
{
"emailAddress": {
"address": "thierry.langie@skynet.be"
}
}
],"ccRecipients": [
]
},"savetoSentItems": "false"
}
我想知道为什么会出现此错误?我可以使用 Graph Explorer(使用委派权限时)而不是 Postman(使用应用程序权限时)发送电子邮件。
如下所示,我在 Azure 门户上的企业应用程序中授予管理员许可。
我在某处读到错误意味着用户在 EXO 云中没有邮箱。 EXO 是 O365 Exchange Online Cloud。因此,如果您在云中没有邮箱,O365 Exchange REST API 将不适用于这些用户。如果是这样,你会怎么做?
我有一个 Web 应用程序,它应该从共享邮箱发送邮件。无论连接哪个用户,这始终是用于发送邮件的同一个邮箱。这就是我使用“应用程序权限”和“客户端凭据流”的原因。
如上所述,我使用个人帐户 (hotmail) 进行测试,但在生产中我将使用工作帐户(无法从我的开发环境访问)。
顺便说一句,我知道有一些库可以简化流程并避免使用 REST API 调用(网址),但我认为这不能解释我面临的问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)