从 Drive API 迁移

本文档概述了如何使用 Drive API 将用于权限管理的代码迁移到 Data Studio API。对于常见的 Drive API 端点,文档中列出了相应的 Data Studio API 代码。

文件

对于 Drive API 文件端点,Data Studio API 仅具有一个 Files: list 端点的等效端点。

列表

API 方法 端点
云端硬盘 POST /drive/v3/files/fileId/permissions
数据洞察 GET /v1/assets:search

比较:

云端硬盘

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
    fetch(`https://www.googleapis.com/drive/v3/files`, {
      headers: {
        Authorization: `Bearer ${oAuthToken}`
      },
      method: "POST",
    })
    

数据洞察

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
    fetch(`https://datastudio.googleapis.com/v1/assets:search?assetTypes={ASSET_TYPE}`, {
      headers: {
        Authorization: `Bearer ${oAuthToken}`
      }
    })
    

请参阅搜索资源

权限

创建、删除和获取

API 方法 端点
云端硬盘 POST /drive/v3/files/fileId/permissions
云端硬盘 DELETE /drive/v3/files/fileId/permissions/permissionId
云端硬盘 GET /drive/v3/files/fileId/permissions/permissionId

Data Studio API 中没有用于管理多个 Permissions 对象的相应端点。一个数据洞察资源只有一个权限对象,并且该对象始终存在。

列表

云端硬盘和数据洞察之间不存在一对一的对应关系,但它们的端点可以实现类似目标。两者的主要区别在于,云端硬盘文件可以有多个权限对象,而数据洞察只能有一个。

API 方法 端点
云端硬盘 GET /drive/v3/files/fileId/permissions
数据洞察 GET /v1/assets/assetId/permissions

比较:

云端硬盘

以下代码列出了 Drive API 的所有权限对象。借助代码,您可以使用分页令牌(如图所示)多次调用该方法,以确保您可以查看为某个文件设置的所有权限。

const fileId = '123'; // This should be replaced with a valid Drive ID.
    const oAuthToken = '123'; // This should be replaced with a valid OAuth token.
    let nextPageToken = undefined;
    let permissions = [];
    do {
      const permissionsData = await fetch(`https://www.googleapis.com/drive/v3/files/${fileId}/permissions`, {
        headers: {
          Authorization: `Bearer ${oAuthToken}`
        }
      });
      nextPageToken = permissionsData.nextPageToken;
      permissions = permissions.concat(permissionsData.permissions)
    } while (nextPageToken !== undefined);
    

数据洞察

由于每个数据洞察资源只有一个权限对象,因此您无需考虑进行分页。

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
    const assetId = '123' // This should be replaced with a valid asset ID.
    fetch(`https://datastudio.googleapis.com/v1/assets/{ASSET_ID}/permissions`, {
      headers: {
        Authorization: `Bearer ${oAuthToken}`
      }
    }
    

请参阅获取权限

更新

在更新权限方面,Data Studio API 和 Drive API 具有非常相似的功能。两者的主要区别在于,您无法为数据洞察权限设置 expirationTime

API 方法 端点
云端硬盘 PATCH /drive/v3/files/fileId/permissions/permissionId
数据洞察 PATCH /v1/assets/assetId/permissions

比较:

云端硬盘

const fileId = '123'; // This should be replaced with a valid Drive ID.
    const oAuthToken = '123'; // This should be replaced with a valid OAuth token.
    const newPermissionsObject = {
      expirationTime: '...',
      role: 'owner', // Or any other option
    }
    fetch(`https://www.googleapis.com/drive/v3/files/${fileId}/permissions/permissionId`, {
      headers: {
        Authorization: `Bearer ${oAuthToken}`
      },
      method: "PATCH",
      body: JSON.stringify(newPermissionsObject)
    })
    

数据洞察

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
    const assetId = '123' // This should be replaced with a valid asset ID.
    const newPermissionsObject = {
      permissions: {
        //...
      }
    }

    fetch(`https://datastudio.googleapis.com/v1/assets/${assetId}/permissions`, {
      headers: {
        Authorization: `Bearer ${oAuthToken}`
      },
      method: "PATCH",
      body: JSON.stringify({
        assetId: assetId,
        permissions: newPermissionsObject
      })
    })
    

有关特定用例的替代方案,请参阅: