使用公开分享Google云端硬盘中的文件

时间:2012-08-08 04:08:15

标签: google-drive-api

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

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

然后我点击“完成”。

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

我正在尝试通过API执行相同的操作,并且在将权限设置为public,将“everyone”设置为“reader”并使用webContentLink值作为文件时,我没有获得预期的结果发布的网址。同样在这种情况下,如果我在未登录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界面,因为看起来我期望使用谷歌所做的正确结果似乎更简单。

1 个答案:

答案 0 :(得分:2)

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

我决定放弃Oauth登录GAE并使用Google帐户登录,因为使用该应用的所有人现在都需要使用Google云端硬盘。将仪表板中的GAE应用程序从“联合”切换为“Google帐户”后,我很乐意在不需要任何登录的情况下向公众共享文件。

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