Microsoft Graph仅返回带有密码授予的“ User.Read”作用域

时间:2019-06-04 04:19:26

标签: azure-active-directory microsoft-graph

我正在尝试从我们组织的365个销售人员电子邮件中获取电子邮件。

我正在使用grant_type=password并提供scope='Mail.Read',但是,无论我将范围参数放在什么位置,API都只会返回User.Read

我这样打了电话:

https://login.microsoftonline.com/{mytenantId}/oauth2/token

传递以下参数:

client_id = myAppId,
client_secret = myAppPassword,
resource = 'https://graph.microsoft.com/',
username = vendedor@email.com.br,
password = passwordDoVendedor,
scope = 'user.read,mail.read,mail.send',
grant_type = 'password',
prompt = 'admin_consent'

无论我在scope参数上加上什么,它仅返回User.Read

{#662
  +"token_type": "Bearer"
  +"scope": "User.Read"
  +"expires_in": "3599"
  +"ext_expires_in": "3599"
  +"expires_on": "1559623624"
  +"not_before": "1559619724"
  +"resource": "https://graph.microsoft.com/"
  +"access_token": "...token..."
  +"refresh_token": "...token..."
}

1 个答案:

答案 0 :(得分:1)

您无法使用v1端点指定范围,仅v2端点支持该范围(请参阅文档中的Scopes, not Resources)。

为了添加Mail.Read,您需要将此添加到Azure门户中的应用程序注册中。

如果我没有指出使用密码授予几乎总是一个错误的主意,那我也会很失落。从根本上说,它不如其他所有OAuth授权安全。