הטמעה של תמיכה באחסון שיתופי

במאמר הזה מוסבר איך להטמיע תמיכה באחסון שיתופי באפליקציה באמצעות Google Drive API.

האחסון השיתופי פועל לפי מודלים שונים של ארגון, שיתוף ובעלות בהשוואה לתיקייה 'האחסון שלי'. אם האפליקציה שלכם יוצרת ומנהלת קבצים באחסון שיתופי, אתם צריכים להטמיע באפליקציה תמיכה באחסון שיתופי. מורכבות ההטמעה תלויה בפונקציונליות של האפליקציה.

כדי להתחיל, צריך לכלול את פרמטר השאילתה supportsAllDrives=true בבקשות כשהאפליקציה מבצעת את הפעולות הבאות:

Drive API v3

  • files.get
  • files.list
  • files.create
  • files.update
  • files.copy
  • files.delete
  • changes.list
  • changes.getStartPageToken
  • permissions.list
  • permissions.get
  • permissions.create
  • permissions.update
  • permissions.delete

Drive API v2

  • files.get
  • files.list
  • files.insert
  • files.update
  • files.patch
  • files.copy
  • files.trash
  • files.untrash
  • files.delete
  • files.touch
  • children.insert
  • parents.insert
  • changes.list
  • changes.getStartPageToken
  • changes.get
  • permissions.list
  • permissions.get
  • permissions.insert
  • permissions.update
  • permissions.patch
  • permissions.delete

הפרמטר supportsAllDrives=true מודיע ל-Google Drive שהאפליקציה שלכם מיועדת לטיפול בקבצים בתיקיות אחסון שיתופי.

אפליקציות שקוראות או משנות הרשאות, עוקבות אחרי שינויים או מחפשות בכמה קורפוסים דורשות יכולות נוספות של אחסון שיתופי. בהמשך המסמך הזה מפורטים שינויים נוספים שצריך לבצע כדי לבצע את המשימות האלה.

חיפוש תוכן באחסון שיתופי

כדי למצוא קבצים של משתמשים בתיקיות אחסון שיתופי, משתמשים בשיטה list במשאב files. כדי לחפש תיקיית אחסון שיתופי, אפשר לעיין במאמר בנושא חיפוש תיקיות אחסון שיתופי.

השיטה list מכילה את הפרמטרים הבאים של שאילתה שספציפיים לאחסון השיתופי:

  • driveId: המזהה של האחסון השיתופי שרוצים לחפש בו.

  • corpora: גופי הפריטים (קבצים או מסמכים) שהשאילתה חלה עליהם. הגופים הנתמכים הם user,‏ domain,‏ drive ו-allDrives. עדיף להשתמש ב-user או ב-drive במקום ב-allDrives כדי לחסוך באנרגיה. כברירת מחדל, המאגר מוגדר ל-user.

  • includeItemsFromAllDrives: האם לכלול בתוצאות פריטים מ'האחסון שלי' ומאחסון שיתופי. אם המאפיין לא קיים או שהערך שלו מוגדר כ-False, לא יוחזרו פריטים באחסון השיתופי.

  • supportsAllDrives: האם האפליקציה ששולחת את הבקשה תומכת גם ב'האחסון שלי' וגם באחסון השיתופי. אם הערך הוא False, פריטים באחסון שיתופי לא נכללים בתגובה.

מצבי השאילתה הבאים ספציפיים לאחסון שיתופי:

includeItemsFromAllDrives corpora תיאור השאילתה
true user שאילתות לגבי קבצים שהמשתמש ניגש אליהם, כולל קבצים באחסון השיתופי ובתיקיית 'האחסון שלי'.
true domain שאילתות לגבי קבצים ששותפו עם הדומיין, כולל קבצים בתיקיות אחסון שיתופי ובתיקיית 'האחסון שלי'.
true drive השאילתה מחפשת את כל הפריטים בתיקיית האחסון השיתופי שצוינה. צריך לציין את driveId בבקשה.
true allDrives שאילתות לגבי קבצים שהמשתמש ניגש אליהם ולגבי כל תיקיות האחסון השיתופי שהוא חבר בהן. שימו לב שהתשובה עשויה לכלול את הסימן incompleteSearch:true, שמציין שחלק מהמאגרים לא נבדקו במסגרת הבקשה הזו.

בדוגמאות הקוד הבאות אפשר לראות איך לחפש קבצים בכל תיקיות האחסון השיתופי וגם בתיקייה 'האחסון שלי':

Python

files = []
page_token = None
while True:
    response = drive_service.files().list(
        q="mimeType='application/vnd.google-apps.folder'",
        spaces='drive',
        corpora='allDrives',
        supportsAllDrives=True,
        includeItemsFromAllDrives=True,
        fields='nextPageToken, files(id, name)',
        pageToken=page_token
    ).execute()
    files.extend(response.get('files', []))
    page_token = response.get('nextPageToken', None)
    if not page_token:
        break

Node.js

let files = [];
let pageToken = null;
do {
  const response = await drive_service.files.list({
    q: "mimeType='application/vnd.google-apps.folder'",
    spaces: 'drive',
    corpora: 'allDrives',
    supportsAllDrives: true,
    includeItemsFromAllDrives: true,
    fields: 'nextPageToken, files(id, name)',
    pageToken: pageToken
  });
  files = files.concat(response.data.files);
  pageToken = response.data.nextPageToken;
} while (pageToken);

Java

List<File> files = new ArrayList<>();
String pageToken = null;
do {
  FileList result = driveService.files().list()
      .setQ("mimeType='application/vnd.google-apps.folder'")
      .setSpaces("drive")
      .setCorpora("allDrives")
      .setSupportsAllDrives(true)
      .setIncludeItemsFromAllDrives(true)
      .setFields("nextPageToken, files(id, name)")
      .setPageToken(pageToken)
      .execute();
  files.addAll(result.getFiles());
  pageToken = result.getNextPageToken();
} while (pageToken != null);

curl

curl -X GET \
  'https://www.googleapis.com/drive/v3/files?corpora=allDrives&includeItemsFromAllDrives=true&supportsAllDrives=true&fields=nextPageToken%2Cfiles(id%2Cname)' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Accept: application/json'

מחליפים את ACCESS_TOKEN בטוקן OAuth 2.0 של האפליקציה.

מעקב אחר שינויים באחסון שיתופי

כדי לעקוב אחרי שינויים באחסון שיתופי, משתמשים בשיטה list במשאב changes. מידע נוסף מופיע במאמר בנושא מעקב אחרי שינויים שבוצעו על ידי משתמשים ובאחסון שיתופי.

השיטה list מכילה את הפרמטרים הבאים של שאילתה שספציפיים לאחסון השיתופי:

  • driveId: תיקיית האחסון השיתופי שממנה מוחזרים השינויים. אם מצוין, מזהי השינויים מתייחסים לשינויים בפריטים באחסון השיתופי, ומספקים את המצב הנוכחי של קובץ. כדי להתייחס לשינוי ספציפי באחסון השיתופי, צריך להשתמש במזהה האחסון השיתופי ובמזהה השינוי כמזהים.

  • includeItemsFromAllDrives: האם לכלול ברשימת השינויים קבצים בתיקיות אחסון שיתופי או שינויים שבוצעו בהן.

  • supportsAllDrives: האם האפליקציה ששולחת את הבקשה תומכת באחסון שיתופי. אם הערך הוא false, לא מוחזרים פריטים באחסון שיתופי, כולל תיקיות אחסון שיתופי וקבצים בתוך אחסון שיתופי.

מצבי השאילתה הבאים ספציפיים לאחסון שיתופי:

includeItemsFromAllDrives driveId תיאור השאילתה
true לא השינויים שמוצגים הם שינויים בקבצים בתוך תיקיות אחסון שיתופי או מחוצה להן שהמשתמש ניגש אליהם, וגם שינויים בתיקיות אחסון שיתופי שהמשתמש חבר בהן.
true כן השינויים משקפים שינויים באחסון השיתופי הספציפי שצוין ובפריטים בתוך האחסון השיתופי הזה.

בדוגמאות הקוד הבאות אפשר לראות איך לעקוב אחרי שינויים באחסון שיתופי:

Python

# 1. Get the start page token for the shared drive.
response = drive_service.changes().getStartPageToken(
    supportsAllDrives=True,
    driveId='SHARED_DRIVE_ID'
).execute()
start_page_token = response.get('startPageToken')

# 2. List changes starting from the page token.
response = drive_service.changes().list(
    pageToken=start_page_token,
    supportsAllDrives=True,
    includeItemsFromAllDrives=True,
    driveId='SHARED_DRIVE_ID'
).execute()
changes = response.get('changes', [])

Node.js

// 1. Get the start page token for the shared drive.
const tokenResponse = await drive_service.changes.getStartPageToken({
  supportsAllDrives: true,
  driveId: 'SHARED_DRIVE_ID'
});
const startPageToken = tokenResponse.data.startPageToken;

// 2. List changes starting from the page token.
const response = await drive_service.changes.list({
  pageToken: startPageToken,
  supportsAllDrives: true,
  includeItemsFromAllDrives: true,
  driveId: 'SHARED_DRIVE_ID'
});
const changes = response.data.changes;

Java

// 1. Get the start page token for the shared drive.
StartPageToken tokenResult = driveService.changes().getStartPageToken()
    .setSupportsAllDrives(true)
    .setDriveId("SHARED_DRIVE_ID")
    .execute();
String startPageToken = tokenResult.getStartPageToken();

// 2. List changes starting from the page token.
ChangeList changesResult = driveService.changes().list(startPageToken)
    .setSupportsAllDrives(true)
    .setIncludeItemsFromAllDrives(true)
    .setDriveId("SHARED_DRIVE_ID")
    .execute();
List<Change> changes = changesResult.getChanges();

curl

# 1. Get the start page token for the shared drive.
curl -X GET \
  'https://www.googleapis.com/drive/v3/changes/startPageToken?supportsAllDrives=true&driveId=SHARED_DRIVE_ID' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Accept: application/json'

# 2. List changes starting from the page token.
curl -X GET \
  'https://www.googleapis.com/drive/v3/changes?pageToken=START_PAGE_TOKEN&supportsAllDrives=true&includeItemsFromAllDrives=true&driveId=SHARED_DRIVE_ID' \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Accept: application/json'

מחליפים את מה שכתוב בשדות הבאים:

  • SHARED_DRIVE_ID: המזהה של האחסון השיתופי.
  • ACCESS_TOKEN: הטוקן של האפליקציה מסוג OAuth 2.0.
  • START_PAGE_TOKEN: אסימון של דף ההתחלה של הכונן המשותף.

מחליפים את SHARED_DRIVE_ID במזהה של האחסון השיתופי.

הפעלת תמיכה באחסון שיתופי בממשק המשתמש של Drive

כדי לגשת לתוכן בתיקיית אחסון שיתופי באמצעות ממשק המשתמש של Drive, צריך לוודא שסימנתם את התיבה תמיכה בתיקיות אחסון שיתופי בכרטיסייה שילוב ממשק המשתמש של Drive ב-Google Drive API במסוף Google Cloud. מידע נוסף זמין במאמר בנושא הגדרת שילוב של ממשק משתמש ב-Drive.

שימוש בכלי לבחירת קבצים של Google עם תיקיות אחסון שיתופי

כלי הבחירה של Google תומך בבחירת פריטים באחסון שיתופי. פרטים על הפעלת תמיכה באחסון שיתופי והוספת תצוגות של אחסון שיתופי בכלי לבחירת קבצים זמינים במאמר בנושא Google Picker API.