4

使用 Google Drive 网络界面,我右键单击一个文件,选择“共享”,进入“共享设置”。我将文件设置为“在网络上公开 - Internet 上的任何人都可以找到和查看”。

然后我复制“共享链接”,在本例中为: https ://docs.google.com/open?id=0B6Cpn8NXwgGPbFBPMEh5VHc1cUU

然后我点击“完成”。

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

我正在尝试通过 API 做同样的事情,但在将权限设置为公共、将“任何人”设置为“阅读者”以及使用文件的 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 界面,因为使用 Google 所做的事情来判断我是否期待正确的结果似乎更简单。

4

1 回答 1

2

我终于在我的案例中发现了问题。我的 GAE 应用程序使用“联合登录”作为“身份验证选项”,而不是“Google Accounts API”。一切都与 Google Drive API 一起工作。我可以使用 Oauth 登录来放置文件、删除、移动、命名它。但一段时间以来,我一直无法从我的 GAE 应用程序创建的 Google Drive 中公开共享文件。如果在未登录 Google Apps 的情况下尝试查看这些文件,系统总是提示我登录。

我决定放弃 GAE 的 Oauth 登录并使用 Google 帐户登录,因为使用该应用程序的每个人现在都需要 Google Drive。将 Dashboard 中的 GAE 应用从“Federated”切换到“Google Accounts”后,我无需登录即可愉快地向公众分享文件。

因此,Google Drive 似乎还没有完全支持 GAE 的“联合登录”,这几乎没有什么可抱怨的,因为“联合登录”被证明是实验性的。

于 2012-08-12T17:10:36.467 回答