הורדת קבצים מגוגל דרייב (הפרטי) באמצעות google api על ידי nodejs
-
יצא לי להתעסק עם זה לאחרונה וראיתי שזה היה חתיכת כאבי ראש והרבה יותר
אני משחזר כאן את סדר הדברים כמיטב זכרוני, בתקוה שיביא תועלת למישהו.
ראשית יש להרשם וליצור פרוייקט חדש כאן
לאחר מכן להכנס לדשבורד של הפרוייקט
לאחר מכן יש צורך להוסיף את שירותי דרייב
נכנסים ל ENABLE APIS AND SERVICES
מחפשים את שירות הדרייב
לוחצים על הפעל - ENABLE
לאחר מכן יש להוסיף הרשאות לגישה לסקופ של גוגל דרייב, ואח"כ ליצור קובץ אישורים, ועל כך בסרטון המצורף (כבר אין לי כח לכתוב..)
https://drive.google.com/file/d/15Vwi5_Jd6dMGEjT2zwXKx2CojxPt3bg6/view?usp=sharing
או ביוטיוב (פתוח בנטפרי)לאחר מכן יש להשים את הקובץ עם האישורים לתיקיית העבודה
ולשנות את שמו ל credentials.json.
וכעת לחלק של node יש להתקין את הספריה של גוגל כפי ההוראות כאן,
ובקיצר דהיינו להתקין כךnpm install googleapis@39 --save
לאחר מכן נמשיך לשלב 2 בהוראות הנ"ל של גוגל, אך לפני ההרצה יש לשנות את שורהconst {client_secret, client_id, redirect_uris} = credentials.installed;
ל
const {client_secret, client_id, redirect_uris} = credentials.web;
בנוסף כדי שיהיה לנו באישורים גם הרשאת גישה להורדת קבצים וכו' ולא רק רשימת הקבצים, שיניתי את שורה
const SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly'];
ל
const SCOPES = [ 'https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/drive.file', 'https://www.googleapis.com/auth/drive.readonly', 'https://www.googleapis.com/auth/drive.metadata.readonly', 'https://www.googleapis.com/auth/drive.appdata', 'https://www.googleapis.com/auth/drive.metadata', 'https://www.googleapis.com/auth/drive.photos.readonly', ];
רק לאחר מכן ניתן להריץ את הקובץ index.js עם הפקודה
node .
כמופיע בהוראות
אני העתקתי את הלינק שקיבלתי בקונסול ופתחתי אותו בדפדפן
נפתח לי דף לאשר גישה לאפליקיצה (ושהיא רק בבדיקה וכו')
יש להקפיד לאשר את זה מאותו חשבון שרשמנו בפרוייקט כחשבון בעל הרשאת גישה.
השרת של גוגל יפנה אתכם לכתובת שרשמנו עם משתנים נוספים
http://localhost:3000/oauth2callback?code=4/gsfdgfsdgfdshjuyODo5wjo9KUpYJ1-Q&scope=https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.readonly https://www.googleapis.com/auth/drive.metadata.readonly https://www.googleapis.com/auth/drive.appdata https://www.googleapis.com/auth/drive.metadata https://www.googleapis.com/auth/drive.photos.readonlyיש לחלץ את הערך של code ולהדביק אותו בקונסולה של node שהפעלנו.
כעת ההרשאות אומתו וניתן לגשת להורדת קובץ וכו'.
דוגמא להורדת קובץ שעבד לי
https://stackoverflow.com/a/56724621מקוה שיעזור למישהו
בהצלחה -
מדריך שמצאתי מאוד ברור לטעמי על מבנה הגישה וההרשאות
https://developers.google.com/identity/protocols/oauth2/web-server -
-
אם אתה משתמש ב
credentials.installed;
ולא בcredentials.web;
אז הקוד יגיע לך כטקסט להעתקה. -
אם יש את זה:
'https://www.googleapis.com/auth/drive'
לא צריך את כל השאר. -
כדאי לזכור שלהרבה שימושים service-account גם מספיק, והרבה יותר קל מאשר כל התהליך של OAuth.
-