Office 365 API ErrorAccessDenied 发送电子邮件时拒绝访问
Office 365 API ErrorAccessDenied Access is denied when sending an email
我们在 Azure 上有一个应用程序,经过大量的工作和挫折,到目前为止我们已经能够读取用户的电子邮件。
出于测试目的,我授予应用程序几乎完全访问权限(见下图)),包括但不限于代表用户发送电子邮件、阅读用户电子邮件等。我知道我们不会除非需要,否则不必为应用程序提供此类访问权限,但这只是为了发送电子邮件。
我有这个 curl 代码用于测试发送电子邮件
curl -i https://graph.microsoft.com/v1.0/me/sendmail -H 'Content-Type: application/json' -X POST -d '{"Message":{"Subject": hi", "Body": {"ContentType": "Text", "Content": "body"},"ToRecipients":[{"EmailAddress": {"Address": "alerts-noreply@mail.windowsazure.com"}}]},"SaveToSentItems": "true"}' -H 'Authorization: Bearer eyJ......TOKEN.....YlhaHbAFQ'
它给了我这个错误
{
"error": {
"code": "ErrorAccessDenied",
"message": "Access is denied. Check credentials and try again.",
"innerError": {
"request-id": "4895f98f-c5a4-4083-867b-f6c7b4634b7f",
"date": "2017-01-24T21:48:47"
}
}
}
如果应用程序拥有如此完整的访问权限,为什么应用程序会被拒绝?
通过以下代码获取令牌:
https://login.microsoftonline.com/f0263....0be3/oauth2/authorize?client_id=8a676..e4b6&redirect_uri=http://www.wrabc.com:8090/&response_type=code.
感谢您的帮助。
如果您在同意后添加了权限,您可以尝试为 https://myapps.microsoft.com/ 的用户删除该应用或注册一个新应用吗?然后登录并再次同意。那应该更新令牌的 scp。
要执行发送消息API,我们需要授予Mail.Send
权限。如果您在用户授予该应用后更改权限,用户需要在re-granting.
之前更新权限
另一种可能的方法re-grant是在初始化授权请求时添加参数prompt=consent
。关于请求中参数的更多详细信息,您可以参考here。
我们在 Azure 上有一个应用程序,经过大量的工作和挫折,到目前为止我们已经能够读取用户的电子邮件。
出于测试目的,我授予应用程序几乎完全访问权限(见下图)
我有这个 curl 代码用于测试发送电子邮件
curl -i https://graph.microsoft.com/v1.0/me/sendmail -H 'Content-Type: application/json' -X POST -d '{"Message":{"Subject": hi", "Body": {"ContentType": "Text", "Content": "body"},"ToRecipients":[{"EmailAddress": {"Address": "alerts-noreply@mail.windowsazure.com"}}]},"SaveToSentItems": "true"}' -H 'Authorization: Bearer eyJ......TOKEN.....YlhaHbAFQ'
它给了我这个错误
{
"error": {
"code": "ErrorAccessDenied",
"message": "Access is denied. Check credentials and try again.",
"innerError": {
"request-id": "4895f98f-c5a4-4083-867b-f6c7b4634b7f",
"date": "2017-01-24T21:48:47"
}
}
}
如果应用程序拥有如此完整的访问权限,为什么应用程序会被拒绝?
通过以下代码获取令牌:
https://login.microsoftonline.com/f0263....0be3/oauth2/authorize?client_id=8a676..e4b6&redirect_uri=http://www.wrabc.com:8090/&response_type=code.
感谢您的帮助。
如果您在同意后添加了权限,您可以尝试为 https://myapps.microsoft.com/ 的用户删除该应用或注册一个新应用吗?然后登录并再次同意。那应该更新令牌的 scp。
要执行发送消息API,我们需要授予Mail.Send
权限。如果您在用户授予该应用后更改权限,用户需要在re-granting.
另一种可能的方法re-grant是在初始化授权请求时添加参数prompt=consent
。关于请求中参数的更多详细信息,您可以参考here。