Google 驱动器 API 客户端 (Python):检索权限

Google Drive API Client (Python): retrieve permissions

我收到关于 Google 驱动器 API example.Can 的错误,你能帮帮我吗? 我使用了一个旧的 Google 项目(使用 Blogger API - 工作得很好)通过添加新的 API for Google Drive into Google 项目。 我创建了一个新的 python 文件并尝试处理 Google 驱动器 API。 我使用了相同的 json 凭据。

我的源代码:https://paste.fedoraproject.org/paste/xTH1zf3tEtLH5~zvuAHf8Q

def retrieve_permissions(service, file_id):
  """Retrieve a list of permissions.

  Args:
    service: Drive API service instance.
    file_id: ID of the file to retrieve permissions for.
  Returns:
    List of permissions.
  """
  try:
    permissions = service.permissions().list(fileId=file_id).execute()
    return permissions.get('items', [])
  except errors.HttpError, error:
    print 'An error occurred: %s' % error
  return None

主要功能:

if __name__ == '__main__':
    served = get_service()
    print "-------"
    print retrieve_permissions(served,'client_secret_driv.json')
    print "======="

错误是

C:\Python27\python.exe C:/Python27/goo_drive_002.py
-------
An error occurred: <HttpError 403 when requesting https://www.googleapis.com/drive/v3/files/client_secret_driv.json/permissions?alt=json returned "Insufficient Permission">
None
=======

Process finished with exit code 0

修改点:

  1. 为了检索文件的权限,需要文件 ID。在您的脚本中,为 service.permissions().list(fileId=file_id).execute()fileID 指定了文件名。所以会出现错误。为此,它使用 service.files().list().
  2. 从文件名中检索文件 ID
  3. 当您需要响应中的权限数据时,请将permissions.get('items', [])更改为permissions.get('permissions', [])

修改脚本:

file_name = 'client_secret_driv.json'
file_id = service.files().list(q="name='" + file_name + "' and trashed=false", fields="files(id)").execute()
permissions = service.permissions().list(fileId=file_id["files"][0]["id"]).execute()
result = permissions.get('permissions', [])

如果我误解了你的问题,我很抱歉。