我正在对Microsoft Graph API
进行编码,我正在尝试证明生成OAuth令牌的能力。我正在使用Postman并将我的应用程序托管在Azure Active Directory
上。我试图传递正确的Scopes
时遇到Postman中的一个问题 - 我试图传递User.read
然而,Postman没有生成令牌。
我的设置:
验证网址:https://login.windows.net/ {my_tenent} / oauth2 / authorize
访问网址:https://login.windows.net/ {my_tenent} / oauth2 / token
范围:User.readAll
这些是否是传入的正确值以生成OAuth令牌?
答案 0 :(得分:3)
您是否确定设置应用程序以请求Microsoft Graph的权限?
"对其他应用程序的权限"部分。您必须静态选择希望应用程序调用Microsoft Graph的范围,除非您使用支持动态同意的V2端点。
请告诉我这是否有帮助!
答案 1 :(得分:3)
听起来你在这里混合了一些v1和v2端点。我已经写了Microsoft v2 Endpoint Primer,可能会帮到你。
使用v2进行身份验证的URI应为createStatus(e){
var formData = new FormData(e.target);
formData.append('image', this.newStatus.image);
formData.append('description', this.newStatus.description);
axios.post('/api/statuses', formData).then(response => {
console.log(response.data);
}, response => {
this.formErrors = response.data;
});
},
而不是https://login.microsoftonline.com/common/oauth2/v2.0/
。
使用Graph请求范围时,请确保使用完整的URI而不仅仅是范围名称本身。例如,https://login.windows.net/{my_tenent}/oauth2/authorize
应该被请求为user.read
。多个范围以空格分隔,因此请求https://graph.microsoft.com/user.read
和user.read
的格式为mail.read
。
如果您更喜欢使用v1端点,则不要将范围请求作为OAUTH工作流程的一部分。使用v1,在注册应用程序时,Azure Active Directory中会定义范围。
如果您不确定要使用哪个,请查看Deciding between the Azure AD and Azure AD v2.0 endpoints。一般来说,我倾向于推荐v2,因为它最终将取代传统的v1实现。然而,有一些较旧的API(EWS,SfB等)目前仅支持v1,因此有些情况下您可以选择。
答案 2 :(得分:2)
我在同样的问题上奋斗了将近一天,然后终于搞清楚了。这些设置对我有用:
如果一切正常,当您点击"请求令牌"
时,您应该会看到登录屏幕