我正在尝试从v2 Azure目录请求以下3个oauth作用域:user.read,user.readbasic.all,calendars.readwrite。
我的授权GET请求是
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?'
+ '&client_id=myclientid'
+ '&response_type=code'
+ `&redirect_uri=myredirecturl`
+ '&response_mode=query'
+ '&scope=user.read%20user.readbasic.all%20calendars.readwrite'
+ '&prompt=consent';
注意我已经排除了自上次授权以来更改了同意类型。
我成功获取了一个代码,并将其替换为令牌:
axios.post(
'https://login.microsoftonline.com/common/oauth2/v2.0/token',
querystring.stringify(
{
client_id: my_client_id,
client_secret: my_app_secret,
grant_type: 'authorization_code',
code,
scope: 'user.readbasic.all user.read calendars.readwrite',
redirect_uri: my_redirect_url
},
null,
null,
{ encodeURIComponent: s => encodeURI(s) }
)
);
答案 0 :(得分:1)
stringify()
方法正在将您的对象转换为application/json
。这是不正确的,它应该是application/x-www-form-urlencoded
。
有关如何使用Axios执行此操作的详细信息,请参阅this GitHub Issue。
此外,个人帐户(MSA)无法读取所有用户'基本概况"。作为一个"个人"帐户,只有一个用户关联。