Javascript 是否有解决方案将用户生日设置为空、空或默认值?

Javascript 是否有解决方案将用户生日设置为空、空或默认值?,javascript,microsoft-graph-api,Javascript,Microsoft Graph Api,我已为用户设置了生日。 我需要取消这个生日,但我不能 我在文档中尝试了PATCH方法,但字段不能为null。 然后,我尝试了多次使用PATCH/PUT/DELETE调用,但总是出现错误 在Delve中,当我们删除生日时,它会变成'0001-01-01T00:00:00Z'。 我已尝试使用此值修补生日,但出现未知错误: { "error": { "code": "-1, Microsoft.SharePoint.Client.UnknownError", "

我已为用户设置了生日。 我需要取消这个生日,但我不能

我在文档中尝试了PATCH方法,但字段不能为null。 然后,我尝试了多次使用PATCH/PUT/DELETE调用,但总是出现错误

在Delve中,当我们删除生日时,它会变成
'0001-01-01T00:00:00Z'
。 我已尝试使用此值修补生日,但出现未知错误:

{
    "error": {
        "code": "-1, Microsoft.SharePoint.Client.UnknownError",
        "message": "Unknown Error",
        "innerError": {
            "request-id": "678fbda6-5fb9-4bc0-91c3-7af2238c1673",
            "date": "2018-05-28T09:16:20"
        }
    }
}

我们可以使用下面的SharePoint REST API设置用户配置文件的生日

/_api/SP.UserProfiles.PeopleManager/SetSingleValueProfileProperty
示例代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {   
    var requestHeaders = {
        'X-RequestDigest': $("#__REQUESTDIGEST").val(),
        "accept": "application/json; odata=nometadata",
        "content-type": "application/json;odata=nometadata"
    };

    var userData = {
        'accountName': "i:0#.f|membership|user@lz.onmicrosoft.com",
        'propertyName': 'SPS-Birthday', //can also be used to set custom single value profile properties
        'propertyValue': ''//set empty value
    }

    $.ajax({
        url: _spPageContextInfo.webAbsoluteUrl + "/_api/SP.UserProfiles.PeopleManager/SetSingleValueProfileProperty",
        type: "POST",
        headers: requestHeaders,
        data: JSON.stringify(userData),
        success: function (data) {
            console.log(data)
        },
        error: function (jqxr, errorCode, errorThrown) {
            console.log(jqxr.responseText);
        }
    });
});
</script>

$(函数(){
var requestHeaders={
'X-RequestDigest':$(“#u-RequestDigest”).val(),
“接受”:“application/json;odata=nometadata”,
“内容类型”:“应用程序/json;odata=nometadata”
};
var userData={
“accountName”:“i:0#.f |会员资格|user@lz.onmicrosoft.com",
'propertyName':'SPS生日',//还可用于设置自定义单值配置文件属性
“propertyValue”:“”//设置空值
}
$.ajax({
url:_spPageContextInfo.webAbsoluteUrl+“/_api/SP.UserProfiles.PeopleManager/SetSingleValueProfileProperty”,
类型:“POST”,
headers:requestHeaders,
数据:JSON.stringify(userData),
成功:功能(数据){
console.log(数据)
},
错误:函数(jqxr、错误代码、错误抛出){
console.log(jqxr.responseText);
}
});
});

注意:修改上述代码中的“accountName”并将代码添加到SharePoint页面的脚本编辑器web部件中。

我认为您实际上无法将生日设置为null,因为DateTimeOffset或任何其他结构在C#中都不可为null。因此,当删除生日而不是null时,它将被设置为结构的默认值(DateTimeOffset的“0001-01-01T00:00:00Z”)@KarlheinzReinhardt,我找不到删除用户道具的方法。删除谓词似乎只允许在/users/:id端点上使用(不是/users/:id/生日)。抱歉,是的,您无法删除a user属性。“删除生日”的意思是将其设置为空。尝试用一些随机日期来修补birtday。我注意到1753年以下的每个日期似乎都会失败。我认为原因是该日期在服务器端被解析为SqlDateTime,其最小日期限制为1753年1月1日