google-drive-sdk – 使用公开分享Google云端硬盘中的文件

使用Google云端硬盘网络界面,我右键点击文件,选择“共享”,即可进入“共享设置”.我将文件设置为“在网络上公开 – 互联网上的任何人都可以查找和查看”.

然后我复制“链接到共享”,在这种情况下它是:
https://docs.google.com/open?id=0B6Cpn8NXwgGPbFBPMEh5VHc1cUU

然后我点击“完成”.

如果我打开另一个浏览器,没有cookie,并尝试访问该链接,我将被重定向到Google的登录页面.我假设此设置意味着无需身份验证即可查看该文件.这是预期的行为吗?

我试图通过API做同样的事情,并且在将权限设置为public,将“everyone”设置为“reader”并将文件的webContentLink值用作发布的URL时,我没有得到预期的结果.同样在这种情况下,如果我在未登录Google Apps时转到该链接,我会被重定向到登录状态.

我使用以下方法调用以下方法来设置权限:

thePermission = insert_permission(userNickName,file['id'],"me","anyone","reader")

方法:

def insert_permission(userNickName,file_id, value, perm_type, role):

  credentials = get_stored_credentials(userNickName)
  service = CreateDrive(credentials)
  if service is None:
      return

  """Insert a new permission.

  Args:
    service: Drive API service instance.
    file_id: ID of the file to insert permission for.
    value: User or group e-mail address, domain name or None for 'default'
           type.
    perm_type: The value 'user', 'group', 'domain' or 'default'.
    role: The value 'owner', 'writer' or 'reader'.
  Returns:
    The inserted permission if successful, None otherwise.
  """
  new_permission = {
      'value': value,
      'type': perm_type,
      'role': role
  }
  try:
    return service.permissions().insert(
        fileId=file_id, body=new_permission).execute()
  except errors.HttpError, error:
     print 'An error occurred: %s' % error
  return None

我主要在这个问题上询问UI界面,因为看起来我希望使用谷歌所做的正确结果似乎更简单.

最佳答案 我终于在我的案例中找到了问题.我的GAE应用程序使用“联合登录”进行“身份验证选项”,而不是“Google帐户API”.一切都适用于Google Drive API.我可以使用Oauth登录来放置文件,删除,移动,命名.但是一段时间以来,我一直无法通过我的GAE应用程序从Google云端硬盘公开共享文件.如果在未登录Google Apps的情况下尝试查看这些文件,系统会始终提示我登录.

我决定放弃Oauth登录GAE并使用Google帐户登录,因为使用该应用的所有人现在都需要Google云端硬盘.将仪表板中的GAE应用程序从“联合”切换为“Google帐户”后,我可以愉快地向公众共享文件,无需任何登录.

因此,Google Drive似乎还没有完全支持GAE的“联合登录”,因为“联合登录”显示为实验性的,所以几乎没有什么可抱怨的.

点赞