【问题标题】:How can I use the Google Drive API to transfer a file to another user's Drive?如何使用 Google Drive API 将文件传输到其他用户的云端硬盘?
【发布时间】:2015-05-20 19:26:14
【问题描述】:

我正在尝试转移当前属于我的 Google 文档并将其移至其他用户的 Google 云端硬盘的根目录。两个帐户都在同一个域中,我正在使用服务帐户来访问所有用户。

起初我尝试通过修改权限来做到这一点。这将使第二个用户可以访问该文件,但不会将其放入驱动器的根目录或其他任何地方。如果用户想看到它,他们必须进行搜索。

然后我找到了一些信息,提到使用文件服务的patch方法来更改文件的元数据,从而启动传输,但这没有奏效。

我唯一可以确定的是属于我自己的根文件夹的 ID 以及我要将文件传输到的用户。这是我尝试做但失败的事情。

# Note: "service" is the connection to the domain service account 

service.files().patch(fileId='FILE_ID_GOES_HERE',
                                     body={'parents':[{'isRoot':True,'kind':'drive#parentReference','id':'user_two_root_folder_id'}]},
                                     removeParents=['user_one_root_folder_id'],
                                     addParents=['user_two_root_folder_id'])

我无法判断是否有任何问题,因为我没有收到任何错误消息。

任何关于如何解决此问题的想法将不胜感激。

【问题讨论】:

    标签: python google-app-engine google-api google-drive-api


    【解决方案1】:

    好的,我想通了。看起来我只是使用了错误的 API。您必须先插入新权限,然后才能删除旧权限。这会将文件发送到新用户驱动器的根目录。

    # Insert new permission first
    new_permission = {
              'value': 'email_of_new_owner@mydomain.com',
              'type': 'user',
              'role': 'owner'
              }
    
    run_new_permission = service.permissions().insert(fileId='FILE_ID_GOES_HERE',body=new_permission).execute()
    # Then delete old permission
    service.permissions().delete(fileId='FILE_ID_GOES_HERE', permissionId='PERMISSION_ID_GOES_HERE').execute()
    

    【讨论】:

      【解决方案2】:

      它会返回任何类型的错误吗?

      我认为您不能像那样“移动”文件。尝试file.insert 到他的驱动器然后delete 来自你自己的驱动器。

      我从未听说有人试图将文件的位置修补给其他人。 TBH 我看不出这是如何工作的,因为您必须使用您的帐户和他的帐户对服务进行身份验证,这是不可能的。即使您说您正在使用可以访问这两个帐户的服务帐户,但我非常渴望 API 可以支持这一点。

      您需要分两步执行此操作,插入 -> 给他删除 -> 从您那里

      更新:我刚从一位 Google Drive 专家的同事那里听说,他说他认为它已损坏(修补位置)。他进行了快速测试并验证这是一个损坏的功能。它返回的只是403 - insufficient permissions

      【讨论】:

      • 我认为这行不通。据我了解,在将文件上传到 Google Drive 时应该使用 file.insert。我没有上传任何东西。我只想转移我驱动器中文件的所有权并将其提供给其他人,并让它出现在他们驱动器的根目录中。
      • 我怀疑你必须下载文件然后重新上传。
      猜你喜欢
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      相关资源
      最近更新 更多