我正在尝试从我们组织的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..."
}
答案 0 :(得分:1)
您无法使用v1端点指定范围,仅v2端点支持该范围(请参阅文档中的Scopes, not Resources)。
为了添加Mail.Read
,您需要将此添加到Azure门户中的应用程序注册中。
如果我没有指出使用密码授予几乎总是一个错误的主意,那我也会很失落。从根本上说,它不如其他所有OAuth授权安全。