代码之家  ›  专栏  ›  技术社区  ›  Nahuel Varela

将google驱动器文件从public更改为private

  •  0
  • Nahuel Varela  · 技术社区  · 7 年前

    我在google驱动器上创建了一个公共文件,使用python上google驱动器的v3 api获取所有文件的列表。

    现在我想更改一个文件权限,这样它将是私有的,并且只能由我(所有者)看到。

    from __future__ import print_function
    from apiclient.discovery import build
    from httplib2 import Http
    from oauth2client import file, client, tools
    
    # Setup the Drive v3 API
    SCOPES = 'https://www.googleapis.com/auth/drive.metadata.readonly'
    store = file.Storage('credentials.json')
    creds = store.get()
    if not creds or creds.invalid:
        flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
        creds = tools.run_flow(flow, store)
    service = build('drive', 'v3', http=creds.authorize(Http()))
    
    # Call the Drive v3 API
    results = service.files().list(
        pageSize=10, fields="nextPageToken, files(id, name, modifiedTime, owners, permissions)").execute()
    items = results.get('files', [])
    if not items:
        print('No files found.')
    else:
        print('Files:')
        for item in items:
            print('{0} ({1}) ({2})'.format(item['name'], item['id'], item["modifiedTime"])
    
    
    Cosa = items[2]
    print("--- Archivo Publico ---")
    print(Cosa["permissions"])
    
    print("---- Modifico los Permisos ----")
    
    service.permissions().delete(fileId="ExampleID",permissionId="anyone").execute()
    

    现在,当我执行代码时,我得到:

    googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/drive/v3/files/1KHjbcJkN79cccgwywrwsBHlOuLUgtOqXZk4gvZKR1eE/permissions/anyone? returned "Insufficient Permission">
    

    为什么?我是文件的所有者。

    编辑:文件有2个权限。第一个是“任何人”,让每个人看到和编辑文件。第二个是我的许可,这使我成为主人。我正试图删除第一个以使文件私有化

    1 回复  |  直到 7 年前
        1
  •  0
  •   Nahuel Varela    7 年前

    我不得不把范围从:

    SCOPES = 'https://www.googleapis.com/auth/drive.metadata.readonly'
    

    SCOPES = 'https://www.googleapis.com/auth/drive'
    

    我还删除了credentials.json并进行了web身份验证。它现在工作正常了