使用jquery ajax调用Microsoft Graph API,officeLocation返回null

时间:2018-03-23 03:54:06

标签: jquery microsoft-graph

使用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);
        }
    });
}

1 个答案:

答案 0 :(得分:1)

您正在请求User.ReadBasic.All范围,该范围仅提供对非常有限的属性集的访问权限:

  • id
  • displayName
  • givenName
  • mail
  • surname
  • userPrincipalName
  • photo

要检索officeLocation,您需要申请User.Read.All范围。这确实需要更高的权限,因此您还需要从租户的全局管理员处接收Admin Consent