Google Drive API客户端(Python):检索权限

时间:2017-07-06 14:54:54

标签: python-2.7 google-drive-api google-api-client

我在使用Google Drive API示例时遇到此错误。您能帮助我吗? 我使用了一个旧的Google项目(使用Blogger API - 运行良好),为Google项目添加了新的Google Drive启用API。 我制作了一个新的python文件,并尝试处理Google Drive 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 个答案:

答案 0 :(得分:0)

修改要点:

  1. 要检索文件的权限,需要文件ID。在您的脚本中,为fileID service.permissions().list(fileId=file_id).execute()提供了文件名。所以发生错误。为此,它使用service.files().list()从文件名中检索文件ID。
  2. 如果您需要回复权限数据,请从permissions.get('items', [])更改为permissions.get('permissions', [])
  3. 修改后的脚本:

    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', [])
    

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