首页 > 解决方案 > 图形 API:无法以编程方式上传具有特定属性的 OneDrive 项目(createdBy 和 lastModifiedDataTime 失败)

问题描述

我正在使用 Graph API 将项目上传到 OneDrive。成功上传后,我还在设置项目的属性。我可以设置“lastModifiedDateTime”,但无法设置“createdBy”和“createdDateTime”。

“createdBy”始终设置为我为 OAuth 创建的 Azure AD 应用程序,并且在 OneDrive UI 中它始终显示“修改者”“SharePoint 应用程序”。

并且“createdDataTime”始终是当前时间(上传时间)。有什么方法可以正确设置这些属性吗?

我用来修补项目属性的 json:

{"createdDateTime":"2020-12-28T12:25:39Z",
  "lastModifiedDateTime":"2020-12-28T12:25:39Z",
  "createdBy":
  {
    "user":{
     "email":"AlexW@vx2.onmicrosoft.com"}
  },
  "lastModifiedBy":{
  "user":{
      "email":"AlexW@vx2.onmicrosoft.com"}
   },
   "fileSystemInfo":{
   "lastModifiedDateTime":"2020-12-28T12:25:39Z",
   "createdDateTime":"2020-12-28T12:25:39Z"},
   "file":{"mimeType":"image/jpeg"}
  }

请在上传和以上补丁请求之后找到属性(来自图形资源管理器的查询):

        {
          "createdDateTime": "2020-12-28T12:28:09Z",
          "lastModifiedDateTime": "2020-12-28T12:25:39Z",
          "createdBy": 
           {
              "application": {
              "displayName": "ConsoleApp"}
           },
           "fileSystemInfo": {
              "createdDateTime": "2020-12-28T12:28:09Z",
              "lastModifiedDateTime": "2020-12-28T12:25:39Z"
           },
           "file": {
              "mimeType": "image/jpeg",
              "hashes": {
                 "quickXorHash": "4EQEGnBnLd04VXEmYqGHHIeZ2po="
            }
           }
          }

如您所见,用户名已替换为 Azure AD 应用程序名称,并且创建的时间是上传完成的时间,而不是补丁请求中指定的时间。

如果有人对此有任何想法,请告诉我。

标签: azuremicrosoft-graph-apioffice365onedrive

解决方案


如果您参考以下文章:https ://docs.microsoft.com/en-us/graph/api/resources/driveitem?view=graph-rest-1.0在“属性”部分下。

在此处输入图像描述

这些是只读字段,这意味着您将无法手动配置相同的值。

解决方法:

话虽如此,这无法通过 Graph API 实现,但是您可以使用 Sharepoint API 来更新它。

验证更新列表项()

为了修改创建者、最后修改者和最后修改者,示例正文如下:

{   formValues": [

            {

               "FieldName": "Editor",
               "FieldValue": "[{'Key':'i:0#.w|AlexW@vx2.onmicrosoft.com'}]"

            },

         {  

               "FieldName": "Author",
               "FieldValue": "[{'Key':'i:0#.w|AlexW@vx2.onmicrosoft.com'}]"

            },
            {

               "FieldName": "Created",
               "FieldValue": "02/18/2020 11:25 PM"

            }
],
  "bNewDocumentUpdate": true 
}
 

请求网址:

https://SPOURL/_api/web/Lists/GetbyTitle('Library Name')/items(1)/ValidateUpdateListItem"

推荐阅读