בסדרת ההדרכות הזו מוסבר איך פועלים כל החלקים בתוסף פעיל ל-Classroom. בכל שלב במדריך נסביר מושגים ספציפיים ונראה איך מטמיעים אותם באפליקציית אינטרנט אחת. המטרה היא לעזור לכם להגדיר, להגדיר ולהפעיל תוסף פונקציונלי.
התוסף צריך ליצור אינטראקציה עם פרויקט ב-Google Cloud. אם אתם לא מכירים את Google Cloud, מומלץ לקרוא את מדריכי המתחילים. אתם יכולים לנהל את פרטי הכניסה, את הגישה ל-API ואת ה-SDK של Google Workspace Marketplace במסוף Google Cloud. למידע נוסף על ה-SDK של Marketplace, אפשר לעיין בדף המדריך בנושא דף הרישום ב-Google Workspace Marketplace.
המדריך הזה עוסק בנושאים הבאים:
- איך משתמשים ב-Google Cloud כדי ליצור דף שיוצג ב-iframe ב-Classroom.
- מוסיפים כניסה יחידה (SSO) של Google ומאפשרים למשתמשים להיכנס.
- קריאות ל-API כדי לצרף את התוסף למטלה.
- לעמוד בדרישות העיקריות לשליחת תוספים ובתכונות הנדרשות.
במדריך הזה אנחנו יוצאים מנקודת הנחה שאתם מכירים את התחום של תכנות ומושגים בסיסיים של פיתוח אינטרנט. מומלץ מאוד לקרוא את המדריך להגדרת פרויקטים לפני שמתחילים את ההדרכות. בדף הזה מפורטים פרטי הגדרה חשובים שלא מופיעים במלואם בהדרכות.
הטמעות לדוגמה
דוגמה מלאה זמינה ב-Python. יש גם הטמעות חלקיות ב-Java וב-Node.js. ההטמעות האלה הן המקור לקוד לדוגמה שמופיע בדפים הבאים.
איפה מורידים
הדוגמאות ל-Python ול-Java זמינות במאגרים של GitHub:
אפשר להוריד את הדוגמה ל-Node.js כקובץ ZIP:
דרישות מוקדמות
כדי להכין פרויקט חדש של תוספי Google Workspace, כדאי לעיין בקטעים הבאים.
אישור HTTPS
אתם יכולים לארח את האפליקציה בכל סביבת פיתוח, אבל התוסף ל-Classroom זמין רק דרך https://
. לכן, כדי לפרוס את האפליקציה או לבדוק אותה בתוך ה-iframe של התוסף, צריך שרת עם הצפנת SSL.
אפשר להשתמש ב-localhost
עם אישור SSL. אם אתם צריכים ליצור אישור לפיתוח מקומי, כדאי להשתמש ב-mkcert.
פרויקט ב-Google Cloud
כדי להשתמש בדוגמאות האלה, צריך להגדיר פרויקט ב-Google Cloud. במדריך יצירת פרויקטים ב-Google Cloud מפורטת סקירה כללית של השלבים הנדרשים כדי להתחיל. בקטע הגדרת פרויקט ב-Google Cloud במדריך הראשון מוסבר גם איך לבצע את פעולות ההגדרה הספציפיות.
בסיום, מורידים את מזהה הלקוח של OAuth 2.0 כקובץ JSON. צריך להוסיף את קובץ פרטי הכניסה הזה לספריית הדוגמה ללא האפסון. למיקומים ספציפיים, אפשר לעיין בקטע הסבר על הקבצים.
פרטי כניסה ל-OAuth
כדי ליצור פרטי כניסה חדשים ל-OAuth:
- עוברים לדף Google Cloud Credentials. מוודאים שבחרתם את הפרויקט הנכון בחלק העליון של המסך.
- לוחצים על CREATE CREDENTIALS ובוחרים באפשרות OAuth client ID בתפריט הנפתח.
- בדף הבא:
- מגדירים את Application type (סוג האפליקציה) ל-Web application (אפליקציית אינטרנט).
- בקטע URIs מורשים להפניה אוטומטית, לוחצים על הוספת URI. מוסיפים את הנתיב המלא של מסלול הקריאה החוזרת לאפליקציה. לדוגמה,
https://my.domain.com/auth-callback
אוhttps://localhost:5000/callback
. יצירת המסלול הזה וניהול שלו יתוארו בהמשך המדריך. תמיד אפשר לערוך או להוסיף עוד מסלולים כאלה. - לוחצים על יצירה.
- לאחר מכן תוצג תיבת דו-שיח עם פרטי הכניסה החדשים שיצרתם. בוחרים באפשרות DOWNLOAD JSON. מעתיקים את קובץ ה-JSON שהורדתם לספריית השרת.
דרישות מוקדמות ספציפיות לשפה
בקובץ ה-README שבכל מאגר מופיעה רשימת הדרישות המוקדמות העדכנית ביותר.
Python
בדוגמה שלנו ל-Python נעשה שימוש ב-Flask framework. אפשר להוריד את קוד המקור המלא דרך הקישורים שסופקו.
אם צריך, מתקינים את Python מגרסה 3.7 ואילך ומוודאים ש-pip
זמין.
python3 -m ensurepip --upgrade
מומלץ גם להגדיר ולהפעיל סביבה וירטואלית חדשה של Python.
python3 -m venv .classroom-addon-env
source .classroom-addon-env/bin/activate
הקובץ requirements.txt
נמצא בכל תיקיית משנה של מדריך בדוגמאות שהורדתם. אפשר להתקין במהירות את הספריות הנדרשות באמצעות pip
. משתמשים בפקודות הבאות כדי להתקין את הספריות הנדרשות להדרכה הראשונה.
cd flask/01-basic-app
pip install -r requirements.txt
Node.js
בדוגמה שלנו ל-Node.js נעשה שימוש ב-Express framework. אפשר להוריד את קוד המקור המלא דרך הקישורים שסופקו.
הדוגמה הזו דורשת Node.js v16.13 ואילך.
מתקינים את מודולי הצמתים הנדרשים באמצעות npm
.
npm install
Java
בדוגמה שלנו ל-Java נעשה שימוש במסגרת Spring Boot. אפשר להוריד את קוד המקור המלא דרך הקישורים שסופקו.
מתקינים את Java מגרסה 11 ואילך, אם היא עדיין לא מותקנת במחשב.
באפליקציות Spring Boot אפשר להשתמש ב-Gradle או ב-Maven כדי לטפל ב-builds ולנהל יחסי תלות. הדוגמה הזו כוללת את מעטפת Maven שמבטיחה פיתוח מוצלח בלי שתצטרכו להתקין את Maven בעצמכם.
בספרייה שבה הורדתם או שכפלתם את הפרויקט, מריצים את הפקודות הבאות כדי לוודא שיש לכם את התנאים המוקדמים הנדרשים להרצת הפרויקט.
java --version
./mvnw --version
או ב-Windows:
java -version
mvnw.cmd --version
הסבר על הקבצים
בקטעים הבאים מתוארת הפריסה של הספריות לדוגמה.
שמות של ספריות
כל מאגר מכיל כמה ספריות ששמותיהן מתחילים במספר, כמו /01-basic-app/
. המספרים תואמים לשלבים ספציפיים בהדרכה.
כל תיקייה מכילה אפליקציית אינטרנט פונקציונלית לחלוטין שמטמיעה את התכונות שמתוארות במדריך מסוים. לדוגמה, הספרייה /01-basic-app/
מכילה את ההטמעה הסופית של המדריך יצירת תוסף.
תוכן הספרייה
תוכן הספרייה משתנה בהתאם לשפת ההטמעה:
Python
שורש הספרייה מכיל את הקבצים הבאים:
main.py
– נקודת הכניסה לאפליקציית Python. מציינים בקובץ את הגדרות השרת שבהן רוצים להשתמש, ומריצים אותו כדי להפעיל את השרת.requirements.txt
– המודולים של Python הנדרשים להרצת אפליקציית האינטרנט. אפשר להתקין אותם באופן אוטומטי באמצעותpip install -r requirements.txt
.client_secret.json
– קובץ הסוד של הלקוח שהורדתם מ-Google Cloud. שימו לב שהקובץ הזה לא נכלל בארכיון לדוגמה. צריך לשנות את שם קובץ פרטי הכניסה שהורדתם ולהעתיק אותו לתיקיית הבסיס של כל ספרייה.
config.py
– אפשרויות הגדרה לשרת Flask.הספרייה
webapp
מכילה את התוכן של אפליקציית האינטרנט. הוא כולל את האפשרויות הבאות:הספרייה
/templates/
עם תבניות Jinja לדפים שונים.הספרייה
/static/
עם קובצי תמונות, CSS ו-JavaScript משניים.routes.py
– שיטות הטיפול (handler) למסלולי אפליקציית האינטרנט.__init__.py
– הפונקציה להפעלה של המודולwebapp
. ה-initializer הזה מפעיל את שרת Flask וטעון את אפשרויות התצורה שמוגדרות ב-config.py
.קבצים נוספים לפי הצורך בשלב מסוים בהדרכה.
Node.js
כל שלב במדריך נמצא בתיקיית משנה משלו ב-<step>
. כל שלב מכיל:
- קבצים סטטיים כמו JavaScript, CSS ותמונות נמצאים בתיקייה
./<step>/public
. - הנתב של Express נמצא בתיקיות
./<step>/routes
. - תבניות HTML נמצאות בתיקיות
./<step>/views
. - אפליקציית השרת היא
./<step>/app.js
.
Java
ספריית הפרויקט כוללת את הפריטים הבאים:
- הספרייה
src.main
מכילה את קוד המקור ואת ההגדרות להרצת האפליקציה. הספרייה הזו כוללת את הפריטים הבאים: + ספרייתjava.com.addons.spring
מכילה את הקובציםApplication.java
ו-Controller.java
. הקובץApplication.java
אחראי להפעלת שרת האפליקציה, והקובץController.java
מטפל בלוגיקה של נקודת הקצה. + הספרייהresources
מכילה את הספרייהtemplates
עם קובצי HTML ו-JavaScript. הוא מכיל גם את הקובץapplication.properties
שמציין את היציאה להפעלת השרת, את הנתיב לקובץ של מאגר המפתחות ואת הנתיב לספרייהtemplates
. בדוגמה הזו, קובץ מאגר המפתחות נמצא בתיקייהresources
. אפשר לאחסן אותו בכל מקום שרוצים, אבל חשוב לעדכן את הנתיב בקובץapplication.properties
בהתאם.- הקובץ
pom.xml
מכיל את המידע הנדרש כדי ליצור את הפרויקט ולהגדיר את יחסי התלות הנדרשים. .gitignore
מכיל שמות של קבצים שאסור להעלות ל-Git. חשוב להוסיף את הנתיב למאגר המפתחות ב-.gitignore
הזה. בדוגמה שצוינה, זהוsecrets/*.p12
(המטרה של מאגר המפתחות מפורטת בקטע הבא). במדריך השלבים 2 ואילך, צריך לכלול גם את הנתיב לקובץclient_secret.json
כדי לוודא שלא תכללו את הסודות במאגר מרוחק. במדריך השלבים 3 ואילך, צריך להוסיף את הנתיב לקובץ של מסד הנתונים H2 ולמפעל של מאגר הנתונים בקובץ. מידע נוסף על הגדרת מאגרי הנתונים האלה זמין במדריך השלישי בנושא טיפול בביקור חוזר.mvnw
ו-mvnw.cmd
הם קובצי ההפעלה של Maven wrapper ל-Unix ול-Windows, בהתאמה. לדוגמה, הפעלת./mvnw --version
ב-Unix תציג את גרסת Apache Maven, בין פרטים אחרים.- הספרייה
.mvn
מכילה את ההגדרות של Maven Wrapper.
- הקובץ
הפעלת השרת לדוגמה
כדי לבדוק את השרת, צריך להפעיל אותו. כדי להפעיל את שרת הדוגמה בשפה הרצויה, פועלים לפי ההוראות הבאות:
Python
פרטי כניסה ל-OAuth
יוצרים ומורידים את פרטי הכניסה ל-OAuth כפי שמתואר למעלה. ממוקמים את קובץ ה-JSON בתיקיית השורש לצד קובץ ההפעלה של השרת של האפליקציה.
הגדרת השרת
יש כמה אפשרויות להפעלת שרת האינטרנט. בסוף הקובץ של Python, מוסיפים את אחת מהאפשרויות הבאות:
לא מאובטח
localhost
. שימו לב שהאפשרות הזו מתאימה לבדיקה ישירה בחלון הדפדפן בלבד. אי אפשר לטעון דומיינים לא מאובטחים ב-iframe של התוסף של Classroom.if __name__ == "__main__": # Disable OAuthlib's HTTPs verification. os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1" # Run the web app at http://localhost:5000. app.run(debug=True)
אבטחה של
localhost
. צריך לציין קבוצה של קובצי מפתחות SSL לארגומנטssl_context
.if __name__ == "__main__": # Run the web app at https://localhost:5000. app.run(host="localhost", ssl_context=("localhost.pem", "localhost-key.pem"), debug=True)
שרת Gunicorn. האפשרות הזו מתאימה לפריסה של שרת או ענן שיהיו מוכנים לייצור. מומלץ להגדיר משתנה סביבה
PORT
לשימוש עם אפשרות ההפעלה הזו.if __name__ == "__main__": # Run the web app at https://<your domain>:<server_port>. # Defaults to https://<your domain>:8080. server_port = os.environ.get("PORT", "8080") app.run(debug=True, port=server_port, host="0.0.0.0")
הפעלת השרת
מריצים את אפליקציית Python כדי להפעיל את השרת כפי שהוגדר בשלב הקודם.
python main.py
לוחצים על כתובת ה-URL שמופיעה כדי להציג את אפליקציית האינטרנט בדפדפן, כדי לוודא שהיא פועלת כמו שצריך.
Node.js
הגדרת השרת
כדי להפעיל את השרת דרך HTTPS, צריך ליצור אישור עצמי שמשמש להפעלת האפליקציה דרך HTTPS. צריך לשמור את פרטי הכניסה האלה בתור sslcert/cert.pem
ו-sslcert/key.pem
בתיקיית השורש של המאגר. יכול להיות שתצטרכו להוסיף את המפתחות האלה לאוסף המפתחות של מערכת ההפעלה כדי שהדפדפן יקבל אותם.
חשוב לוודא ש-*.pem
נמצא בקובץ .gitignore
, כי לא רוצים לשלוח את הקובץ ל-Git.
הפעלת השרת
אפשר להריץ את האפליקציה באמצעות הפקודה הבאה, ולהחליף את step01
בשלב הנכון שרוצים להריץ כשרת (לדוגמה, step01
בשביל 01-basic-app ו-step02
בשביל 02-sign-in).
npm run step01
או
npm run step02
הפעולה הזו תפעיל את שרת האינטרנט בכתובת https://localhost:5000
.
אפשר לסגור את השרת באמצעות Control + C
במסוף.
Java
הגדרת השרת
כדי להפעיל את השרת דרך HTTPS, צריך ליצור אישור עצמי שמשמש להפעלת האפליקציה דרך HTTPS.
מומלץ להשתמש ב-mkcert לפיתוח מקומי. אחרי שתתקינו את mkcert
, תוכלו להשתמש בפקודות הבאות כדי ליצור אישור ששמור באופן מקומי ולהריץ אותו דרך HTTPS.
mkcert -install
mkcert -pkcs12 -p12-file <path_to_keystore> <domain_name>
בדוגמה הזו, קובץ מאגר המפתחות נכלל בספריית המשאבים. אפשר לאחסן אותו בכל מקום שרוצים, אבל חשוב לעדכן את הנתיב בקובץ application.properties
בהתאם. שם הדומיין הוא הדומיין שבו מריצים את הפרויקט (לדוגמה, localhost
).
חשוב לוודא ש-*.p12
נמצא בקובץ .gitignore
, כי לא רוצים לשלוח את הקובץ ל-Git.
הפעלת השרת
מפעילים את השרת על ידי הרצת השיטה main
בקובץ Application.java
. לדוגמה, ב-IntelliJ אפשר ללחוץ לחיצה ימנית על Application.java
> Run 'Application'
בתיקייה src/main/java/com/addons/spring
, או לפתוח את הקובץ Application.java
וללחוץ על החץ הירוק שמשמאל לחתימת השיטה main(String[] args)
. לחלופין, אפשר להריץ את הפרויקט בחלון מסוף:
./mvnw spring-boot:run
או ב-Windows:
mvnw.cmd spring-boot:run
הפקודה הזו תפעיל את השרת בכתובת https://localhost:5000
או ביציאה שציינתם ב-application.properties
.