توضِّح سلسلة الجولات الإرشادية هذه جميع الأجزاء المتحركة في إحدى الإضافات التي تعمل في Classroom. تتناول كل خطوة من خطوات الجولة التعليمية مفاهيم محدّدة، وتنفّذها في تطبيق ويب واحد. والهدف من ذلك هو مساعدتك في إعداد إضافة وظيفية وضبطها وإطلاقها.
يجب أن تتفاعل الإضافة مع مشروع على Google Cloud. إذا لم تكن على دراية باستخدام Google Cloud، ننصحك بقراءة أدلة البدء. يمكنك إدارة بيانات الاعتماد وإمكانية الوصول إلى واجهة برمجة التطبيقات وحزمة تطوير البرامج (SDK) في Google Workspace Marketplace في Google Cloud Console. لمزيد من المعلومات عن حزمة تطوير البرامج (SDK) في Marketplace، يُرجى الانتقال إلى صفحة دليل Google Workspace Marketplace listing.
يتناول هذا الدليل المواضيع التالية:
- استخدِم Google Cloud لإنشاء صفحة لعرضها في إطار iframe في Classroom.
- أضِف ميزة "تسجيل الدخول المُوحَّد" من Google واسمح للمستخدمين بتسجيل الدخول.
- يمكنك إرسال طلبات بيانات من واجهة برمجة التطبيقات لإرفاق الإضافة بمهمة.
- يجب معالجة المتطلبات الرئيسية لإرسال الإضافة والميزات المطلوبة.
يفترض هذا الدليل أنّك على دراية بالبرمجة ومفاهيم تطوير الويب الأساسية. ننصحك بشدة بقراءة دليل إعداد المشروع قبل بدء عمليات الشرح. تحتوي هذه الصفحة على تفاصيل إعدادات مهمة لم يتم تناولها بالكامل في الخطوات الإرشادية.
أمثلة على العناصر المنفّذة
يتوفّر مثال مرجعي كامل في Python. تتوفّر أيضًا عمليات التنفيذ الجزئية في Java وNode.js. وتعدّ عمليات التنفيذ هذه هو مصدر أمثلة الرموز البرمجية المتوفّرة في الصفحات اللاحقة.
مكان التنزيل
تتوفّر أمثلة Python وJava في مستودعات GitHub:
يمكن تنزيل نموذج Node.js كملف zip:
المتطلبات الأساسية
راجِع الأقسام التالية لإعداد مشروع جديد للإضافات.
شهادة HTTPS
على الرغم من أنّه يمكنك استضافة تطبيقك على أي بيئة تطوير، لا تتوفّر إضافة
Classroom إلا من خلال https://
. لذلك،
ستحتاج إلى خادم مزوّد بتشفير طبقة المقابس الآمنة لنشر تطبيقك أو اختباره ضمن
إطار iframe للإضافة.
من الممكن استخدام localhost
مع شهادة SSL، ويمكنك استخدام mkcert إذا
كنت بحاجة إلى إنشاء شهادة للتطوير على الجهاز.
مشروع Google Cloud
يجب إعداد مشروع على Google Cloud لاستخدامه مع هذه الأمثلة. اطّلِع على دليل إنشاء مشروع على Google Cloud للحصول على نظرة عامة حول الخطوات اللازمة للبدء. يوضّح قسم إعداد مشروع على Google Cloud في الجولة الإرشادية الأولى أيضًا الإجراءات المتعلّقة بالضبط التي يجب اتّخاذها.
عند الانتهاء، نزِّل معرِّف العميل لبروتوكول OAuth 2.0 كملف JSON. عليك إضافة ملف بيانات الاعتماد هذا إلى دليل الأمثلة الذي تم فك ضغطه. اطّلِع على فهم ملفّات لمواقع جغرافية معيّنة.
بيانات اعتماد OAuth
اتّبِع الخطوات التالية لإنشاء بيانات اعتماد جديدة لبروتوكول OAuth:
- انتقِل إلى صفحة بيانات اعتماد Google Cloud. تأكَّد من اختيار المشروع الصحيح في أعلى الشاشة.
- انقر على إنشاء بيانات اعتماد واختر معرِّف عميل OAuth من القائمة المنسدلة.
- في الصفحة التالية:
- اضبط نوع التطبيق على تطبيق ويب.
- ضمن معرِّفات الموارد المنتظمة (URI) المعتمَدة لإعادة التوجيه، انقر على إضافة معرِّف الموارد المنتظم (URI). أضِف المسار
الكامل لمسار طلب معاودة الاتصال بتطبيقك. على سبيل المثال،
https://my.domain.com/auth-callback
أوhttps://localhost:5000/callback
. يمكنك إنشاء هذا المسار والتعامل معه لاحقًا في هذه الجولة الإرشادية. ويمكنك تعديل هذه المسارات أو إضافة المزيد منها في أي وقت. - انقر على إنشاء.
- سيظهر لك بعد ذلك مربّع حوار يتضمّن بيانات الاعتماد التي أنشأتها حديثًا. اختَر تنزيل ملف JSON. انسخ ملف JSON الذي تم تنزيله إلى دليل الخادم.
المتطلبات الأساسية الخاصة باللغة
اطّلِع على ملف README في كل مستودع للحصول على أحدث قائمة بالملفّات المطلوبة.
Python
يستخدم مثال Python إطار عمل Flask. يمكنك تنزيل رمز المصدر الكامل من الروابط المقدَّمة.
إذا لزم الأمر، ثبِّت Python 3.7 والإصدارات الأحدث وتأكَّد من توفّر pip
.
python3 -m ensurepip --upgrade
ننصحك أيضًا بإعداد بيئة افتراضية جديدة لـ Python وتفعيلها.
python3 -m venv .classroom-addon-env
source .classroom-addon-env/bin/activate
يظهر الرمز requirements.txt
في كل دليل فرعي للحلّ المفصّل في
الأمثلة التي تم تنزيلها. يمكنك تثبيت المكتبات المطلوبة بسرعة باستخدام
pip
. استخدِم الأوامر التالية لتثبيت المكتبات المطلوبة ل walkthrough الأولى.
cd flask/01-basic-app
pip install -r requirements.txt
Node.js
يستخدم مثال Node.js إطار عمل Express. يمكنك تنزيل رمز المصدر الكامل من الروابط المقدَّمة.
يتطلّب هذا المثال استخدام الإصدار 16.13 من Node.js أو إصدار أحدث.
ثبِّت وحدات العقدة المطلوبة باستخدام npm
.
npm install
Java
يستخدم مثال Java إطار عمل Spring Boot. يمكنك تنزيل رمز المصدر الكامل من الروابط المقدَّمة.
ثبِّت Java 11 والإصدارات الأحدث إذا لم يكن مثبّتًا على جهازك.
يمكن لتطبيقات Spring Boot استخدام Gradle أو Maven لمعالجة عمليات الإنشاء وإدارة التبعيات. يتضمّن هذا المثال حزمة 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
- طرق معالِج مسارات تطبيقات الويب__init__.py
: دالة الإعداد لوحدةwebapp
. يشغِّل ملف الإعدادات هذا خادم Flask ويحمِّل خيارات الإعدادات التي تم ضبطها فيconfig.py
.ملفات إضافية حسب الحاجة في خطوة معيّنة من الخطوات الإرشادية
Node.js
يمكن العثور على كل خطوة من الخطوات في مجلّدها الفرعي <step>
. تحتوي كل خطوة على ما يلي:
- يمكن العثور على الملفات الثابتة، مثل JavaScript وCSS والصور، في مجلد
./<step>/public
. - يمكن العثور على أجهزة التوجيه السريعة في مجلدات
./<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 وملف datastore factory. يمكنك الاطّلاع على مزيد من المعلومات حول إعداد مستودعات البيانات هذه في الخطوة الثالثة من الشرح التفصيلي حول معالجة الزيارات المتكرّرة. mvnw
وmvnw.cmd
هما ملفّا التشغيل لبرنامج Maven لنظامَي التشغيل 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'
في directory
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
.