ממשק ה-API של Google Picker

תיבת הדו-שיח של Google Picker

בוחר Google הוא תיבת דו-שיח 'פתיחת קובץ' למידע המאוחסן ב-Google Drive. לבורר Google יש את התכונות הבאות:

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

ממשק ה-API של Google Picker הוא JavaScript של JavaScript שניתן להשתמש בו באפליקציות האינטרנט שלכם כדי לאפשר למשתמשים לפתוח או להעלות קובצי Drive.

דרישות הבקשה

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

בנוסף, אתם צריכים פרויקט ב-Google Cloud.

הגדרת הסביבה

כדי להתחיל להשתמש ב-Google Picker API, עליך להגדיר את הסביבה.

מפעילים את ה-API

לפני שמשתמשים ב-Google APIs, צריך להפעיל אותם בפרויקט ב-Google Cloud. אתם יכולים להפעיל ממשק API אחד או יותר בפרויקט אחד ב-Google Cloud.

יצירה של מפתח API

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

כך יוצרים מפתח API:

  1. במסוף Google Cloud, עוברים לתפריט > ממשקי API ושירותים > פרטי כניסה.

    כניסה לדף Credentials

  2. לוחצים על Create credentials > API API.
  3. מפתח ה-API החדש שלכם מוצג.
    • לוחצים על 'העתקה' כדי להעתיק את מפתח ה-API ולהשתמש בו בקוד האפליקציה. מפתח ה-API מופיע גם בקטע 'מפתחות API' בפרטי הכניסה של הפרויקט.
    • לוחצים על Restrict key כדי לעדכן את ההגדרות המתקדמות ולהגביל את השימוש במפתח ה-API. מידע נוסף זמין במאמר החלת הגבלות על מפתחות API.

אישור פרטי כניסה עבור אפליקציית אינטרנט

כדי לבצע אימות כמשתמש קצה ולגשת לנתוני המשתמשים באפליקציה, עליכם ליצור מזהה לקוח אחד או יותר של OAuth 2.0. מזהה לקוח משמש לזיהוי אפליקציה אחת לשרתי OAuth של Google. אם האפליקציה פועלת בכמה פלטפורמות, עליכם ליצור מזהה לקוח נפרד לכל פלטפורמה.

  1. במסוף Google Cloud, עוברים לתפריט > ממשקי API ושירותים > פרטי כניסה.

    כניסה לדף Credentials

  2. לוחצים על Create Credentials > OAuth client ID.
  3. לוחצים על סוג אפליקציה > אפליקציית אינטרנט.
  4. בשדה Name, מזינים שם לפרטי הכניסה. השם הזה מופיע רק במסוף Google Cloud.
  5. מוסיפים מזהי URI מורשים שקשורים לאפליקציה:
    • אפליקציות בצד הלקוח (JavaScript) – בקטע מקורות JavaScript מורשים לוחצים על הוספת URI. לאחר מכן, יש להזין URI לשימוש בבקשות לדפדפן. מזהה את הדומיינים שמהם האפליקציה שלך יכולה לשלוח בקשות API לשרת OAuth 2.0.
    • אפליקציות בצד השרת (Java, Python ועוד) – בקטע מזהי URI מורשים להפניה מחדש, לוחצים על הוספת URI. לאחר מכן מזינים URI של נקודת קצה שאליה שרת ה-OAuth 2.0 יכול לשלוח תגובות.
  6. לוחצים על יצירה. המסך שנוצר על ידי הלקוח ב-OAuth מופיע. הוא כולל את מספר הלקוח החדש ואת סוד הלקוח.

    הערה: סודות של לקוחות לא נמצאים בשימוש באפליקציות אינטרנט.

  7. לוחצים על אישור. פרטי הכניסה החדשים שייווצרו יופיעו במזהי לקוחות ב-OAuth 2.0.
חשוב: האפליקציה חייבת לשלוח אסימון גישה מסוג OAuth 2.0 עם תצוגות שמקבלות גישה לנתוני משתמש פרטיים כשיוצרים אובייקט Picker. כדי לבקש אסימון גישה, עיינו במאמר שימוש ב-OAuth 2.0 לגישה אל Google APIs.

הצגה של בוחר Google

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

טעינת הספרייה של Google Picker

כדי לטעון את הספרייה של Google Picker, יש לקרוא לפונקציה gapi.load() עם שם הספרייה ופונקציית קריאה חוזרת כדי להפעיל אחרי טעינה מוצלחת:

    <script>
      let tokenClient;
      let accessToken = null;
      let pickerInited = false;
      let gisInited = false;

      // Use the API Loader script to load google.picker
      function onApiLoad() {
        gapi.load('picker', onPickerApiLoad);
      }

      function onPickerApiLoad() {
        pickerInited = true;
      }

      function gisLoaded() {
        // TODO(developer): Replace with your client ID and required scopes.
        tokenClient = google.accounts.oauth2.initTokenClient({
          client_id: 'CLIENT_ID',
          scope: 'SCOPES',
          callback: '', // defined later
        });
        gisInited = true;
    }
    </script>
    <!-- Load the Google API Loader script. -->
    <script async defer src="https://apis.google.com/js/api.js" onload="onApiLoad()"></script>
    <script async defer src="https://accounts.google.com/gsi/client" onload="gisLoaded()"></script>
    

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

  • CLIENT_ID: מזהה הלקוח של אפליקציית האינטרנט שלך.
  • SCOPES: היקף אחד או יותר של OAuth 2.0 שצריך לבקש כדי לגשת ל-Google APIs, בהתאם לרמת הגישה הנדרשת. מידע נוסף זמין במאמר היקפים של OAuth 2.0 ל-Google APIs.

ספריית JavaScript של google.accounts.oauth2 עוזרת לכם לבקש את הסכמת המשתמשים ולקבל אסימון גישה, כדי לעבוד עם נתוני המשתמשים. השיטה initTokenClient() מפעילה לקוח אסימון חדש עם מזהה הלקוח של אפליקציית האינטרנט שלכם. מידע נוסף זמין במאמר שימוש במודל האסימון.

הפונקציה onApiLoad() טוענת את ספריות הבורר של Google. פונקציית הקריאה החוזרת של onPickerApiLoad() נקראת אחרי שספריית הבורר של Google נטענת.

הצגה של בוחר Google

הפונקציה createPicker() בודקת בהמשך כדי לוודא שה-API של Google Picker מסיים את הטעינה ושנוצר אסימון OAuth. הפונקציה יוצרת מופע של הבורר של Google ומציגה אותו:

    // Create and render a Google Picker object for selecting from Drive.
    function createPicker() {
      const showPicker = () => {
        // TODO(developer): Replace with your API key
        const picker = new google.picker.PickerBuilder()
            .addView(google.picker.ViewId.DOCS)
            .setOAuthToken(accessToken)
            .setDeveloperKey('API_KEY')
            .setCallback(pickerCallback)
            .build();
        picker.setVisible(true);
      }

      // Request an access token.
      tokenClient.callback = async (response) => {
        if (response.error !== undefined) {
          throw (response);
        }
        accessToken = response.access_token;
        showPicker();
      };

      if (accessToken === null) {
        // Prompt the user to select a Google Account and ask for consent to share their data
        // when establishing a new session.
        tokenClient.requestAccessToken({prompt: 'consent'});
      } else {
        // Skip display of account chooser and consent dialog for an existing session.
        tokenClient.requestAccessToken({prompt: ''});
      }
    }
    

כדי ליצור מופע ב-Google Picker, עליכם ליצור אובייקט Picker באמצעות PickerBuilder. ל-PickerBuilder יש צורך ב-View, באסימון OAuth, במפתח למפתחים ובפונקציית קריאה חוזרת כדי לקרוא להצלחה (pickerCallback).

האובייקט Picker מבצע רינדור View בכל פעם. אפשר לציין לפחות תצוגה אחת דרך ViewId (google.​picker.​ViewId.*) או על ידי יצירת מכונה מסוג (google.​picker.​*View). עליכם להגדיר את התצוגה לפי סוג כדי לקבל שליטה נוספת על אופן העיבוד של התצוגה.

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

הטמעת הקריאה החוזרת (callback) של Google Picker

אפשר להשתמש בקריאה חוזרת (callback) של Google Picker כדי להגיב לאינטראקציות של המשתמש בכלי לבחירת Google, למשל בחירת קובץ או הקשה על 'ביטול'. האובייקט Response מעביר מידע על הבחירות של המשתמש.

    // A simple callback implementation.
    function pickerCallback(data) {
      let url = 'nothing';
      if (data[google.picker.Response.ACTION] == google.picker.Action.PICKED) {
        let doc = data[google.picker.Response.DOCUMENTS][0];
        url = doc[google.picker.Document.URL];
      }
      let message = `You picked: ${url}`;
      document.getElementById('result').innerText = message;
    }
    

הקריאה החוזרת (callback) מקבלת אובייקט data בקידוד JSON. האובייקט מכיל Action שהמשתמש מבצע באמצעות הבוחר של Google (google.picker.Response.ACTION). אם המשתמש בוחר פריט Document, גם מערך google.picker.Response.DOCUMENTS מאוכלס. בדוגמה הזו, google.picker.Document.URL מוצג בדף הראשי. פרטים על שדות הנתונים אפשר למצוא בחומר העזר בנושא JSON.

סינון של סוגי קבצים ספציפיים

שימוש ב-ViewGroup כדי לסנן פריטים ספציפיים. דוגמת הקוד הבאה מראה כיצד תצוגת המשנה 'Google Drive' מציגה מסמכים ומצגות בלבד.

    let picker = new google.picker.PickerBuilder()
        .addViewGroup(
          new google.picker.ViewGroup(google.picker.ViewId.DOCS)
              .addView(google.picker.ViewId.DOCUMENTS)
              .addView(google.picker.ViewId.PRESENTATIONS))
        .setOAuthToken(oauthToken)
        .setDeveloperKey(developerKey)
        .setCallback(pickerCallback)
        .build();
    
לקבלת רשימה של סוגי התצוגה החוקיים, ראו ViewId.

כוונון המראה של הבוחר ב-Google

אתם יכולים להשתמש באובייקט Feature כדי להפעיל או להשבית את התכונות בתצוגות שונות. כדי לחדד את המראה של החלון של Google Picker, אפשר להשתמש בפונקציה PickerBuilder.enableFeature() או בפונקציה PickerBuilder.disableFeature(). למשל, אם יש לכם רק תצוגה אחת, תוכלו להסתיר את חלונית הניווט (Feature.NAV_HIDDEN) כדי לתת למשתמשים יותר שטח להצגת פריטים.

דוגמת הקוד הבאה מציגה דוגמה לבוחר חיפוש של גיליון אלקטרוני שמשתמש בתכונה זו:

     let picker = new google.picker.PickerBuilder()
         .addView(google.picker.ViewId.SPREADSHEETS)
         .enableFeature(google.picker.Feature.NAV_HIDDEN)
         .setDeveloperKey(developerKey)
         .setCallback(pickerCallback)
         .build();
     

עיבוד הבוחר של Google בשפות אחרות

מציינים את שפת ממשק המשתמש על ידי ציון הלוקאל למכונה PickerBuilder באמצעות השיטה setLocale(locale).

דוגמת הקוד הבאה מראה כיצד להגדיר את השפה הצרפתית:

    let picker = new google.picker.PickerBuilder()
        .addView(google.picker.ViewId.IMAGE_SEARCH)
        .setLocale('fr')
        .setDeveloperKey(developerKey)
        .setCallback(pickerCallback)
        .build();
    

רשימת הלוקאלים הנתמכים כרגע:

af
am
ar
bg
bn
ca
cs
da
de
el
en
en-GB
es
es-419
et
eu
fa
fi
fil
fr
fr-CA
gl
gu
hi
hr
hu
id
is
it
iw
ja
kn
ko
lt
lv
ml
mr
ms
nl
no
pl
pt-BR
pt-PT
ro
ru
sk
sl
sr
sv
sw
ta
te
th
tr
uk
ur
vi
zh-CN
zh-HK
zh-TW
zu