使用Microsoft Graph API时遇到问题。我使用jQuery.ajax()
来调用/users
并过滤了一些属性,包括officeLocation
。大多数情况下,当我在SharePoint Online中运行它时,它会为null
返回officeLocation
。
范围:openid
User.ReadBasic.All
People.Read
Calendars.ReadWrite
这是我的代码:
function getLocationListByType(type, callback) {
getAccessToken(function (accessToken) {
if (accessToken) {
type = handleEscapeParam(type);
if (type == 'Room') {
type = 'room';
} else {
type = 'equipment';
}
$.ajax({
type: "GET",
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'bearer ' +
sessionStorage.accessToken);
},
url: "https://graph.microsoft.com/v1.0/users?$filter=surname eq '" +
type + "'&$select=id,displayName,mail,officeLocation&$top=999",
success: function (res) {
callback(restructuringData(res.value));
},
error: function (error) {
callback(error);
}
});
} else {
var error = {
responseText: 'Could not retrieve access token'
};
callback(null, error);
}
});
}
答案 0 :(得分:1)
您正在请求User.ReadBasic.All
范围,该范围仅提供对非常有限的属性集的访问权限:
id
displayName
givenName
mail
surname
userPrincipalName
photo
要检索officeLocation
,您需要申请User.Read.All
范围。这确实需要更高的权限,因此您还需要从租户的全局管理员处接收Admin Consent。