مهاجرت از Drive API

این سند نحوه انتقال کد با استفاده از Drive API برای مدیریت مجوزها به Looker Studio API را شرح می دهد. برای نقاط پایانی مشترک Drive API، کد مربوطه Looker Studio API را نشان می دهد.

فایل ها

برای نقاط پایانی فایل‌های Drive API، Looker Studio API فقط یک نقطه پایانی معادل برای Files: list endpoint دارد.

فهرست کنید

API روش نقطه پایانی
راندن POST /drive/v3/files
استودیو Looker 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",
})

استودیو Looker

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

هیچ نقطه پایانی مربوطه در Looker Studio API برای مدیریت چندین اشیاء Permissions وجود ندارد. فقط یک شی مجوز برای دارایی Looker Studio وجود دارد و همیشه وجود دارد.

فهرست کنید

مسابقه 1 به 1 بین Drive و Looker Studio وجود ندارد، اما نقاط پایانی اهداف مشابهی را دنبال می‌کنند. تفاوت اصلی این است که یک فایل Drive می‌تواند دارای مجوزهای زیادی باشد و استودیو Looker دقیقاً یکی دارد.

API روش نقطه پایانی
راندن GET /drive/v3/files/fileId/permissions
استودیو Looker 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);

استودیو Looker

از آنجایی که تنها یک شی مجوز برای دارایی Looker Studio وجود دارد، لازم نیست صفحه بندی را حساب کنید.

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}`
  }
}

به دریافت مجوزها مراجعه کنید.

به روز رسانی

برای به‌روزرسانی مجوزها، Looker Studio و Drive API عملکرد بسیار مشابهی دارند. تفاوت اصلی این است که نمی‌توانید expirationTime روی مجوز Looker Studio تنظیم کنید.

API روش نقطه پایانی
راندن PATCH /drive/v3/files/fileId/permissions/permissionId
استودیو Looker 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)
})

استودیو Looker

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({
    name: assetId,
    permissions: newPermissionsObject
  })
})

برای جایگزین های خاص مورد استفاده، نگاه کنید به: