توضح هذه السلسلة من الجولات التفصيلية جميع العناصر المتغيرة لإحدى إضافات Classroom القابلة للتطبيق. تتناول كل خطوة جولة تفصيلية مفاهيم محددة، وتنفيذها في تطبيق ويب واحد. الهدف هو مساعدتك في إعداد وظيفة إضافية وتكوينها وإطلاقها.
يجب أن تتفاعل الإضافة مع مشروع على Google Cloud. إذا لم تكن على دراية بخدمة Google Cloud، ننصحك بقراءة أدلة البدء. يمكنك إدارة بيانات الاعتماد والوصول إلى واجهة برمجة التطبيقات وحزمة تطوير البرامج (SDK) في Google Workspace Marketplace في Google Cloud Console. لمزيد من المعلومات حول حزمة SDK الخاصة بالسوق، انتقِل إلى صفحة دليل بطاقة بيانات Google Workspace Marketplace.
يتناول هذا الدليل المواضيع التالية:
- يمكنك استخدام Google Cloud لإنشاء صفحة لعرضها في إطار iframe في Classroom.
- إضافة خدمة الدخول المُوحَّد (SSO) على Google والسماح للمستخدمين بتسجيل الدخول
- يمكنك إجراء طلبات بيانات من واجهة برمجة التطبيقات لإرفاق إضافتك بمهمة.
- يجب استيفاء المتطلبات الرئيسية لإرسال الإضافات والميزات المطلوبة.
يفترض هذا الدليل أنّك على دراية بالبرمجة والمفاهيم الأساسية لتطوير الويب. ننصح بشدة بقراءة دليل إعداد المشروع قبل بدء الجولات التفصيلية. تحتوي هذه الصفحة على تفاصيل تهيئة مهمة لم يتم تناولها بالكامل في الجولات التفصيلية.
أمثلة على العناصر المنفّذة
يتوفر مثال مرجعي كامل في Python. وتتوفّر عمليات التنفيذ الجزئية أيضًا في Java وNode.js. وهذه عمليات التنفيذ هي مصادر مثال الرمز البرمجي الذي تم العثور عليه في الصفحات اللاحقة.
مكان التنزيل
تتوفر أمثلة بايثون وJava في مستودعات جيت هب:
يمكن تنزيل نموذج 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
يستخدم مثال بايثون إطار عمل Flask. يمكنك تنزيل رمز المصدر الكامل من الروابط المتوفّرة.
إذا لزم الأمر، ثبِّت الإصدار 3.7 أو الإصدارات الأحدث من Python وتأكّد من توفّر pip
.
python3 -m ensurepip --upgrade
ننصحك أيضًا بإعداد بيئة افتراضية جديدة بلغة بايثون وتفعيلها.
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. يمكنك تنزيل رمز المصدر الكامل من الروابط المتوفّرة.
يتطلب هذا المثال الإصدار 16.13 من Node.js أو إصدار أحدث.
ثبِّت وحدات العُقد المطلوبة باستخدام "npm
".
npm install
Java
يستخدم مثال Java إطار عمل التمهيد الربيعي. يمكنك تنزيل رمز المصدر الكامل من الروابط المتوفّرة.
تثبيت 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
. - يمكن العثور على أجهزة توجيه 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 على نظامَي التشغيل Unix وWindows على التوالي. على سبيل المثال، عند تشغيل./mvnw --version
على Unix ينتج إصدار Apache Maven، بالإضافة إلى معلومات أخرى.- يحتوي الدليل
.mvn
على إعدادات برنامج تضمين Maven.
- يحتوي
تشغيل نموذج الخادم
يجب تشغيل الخادم لاختباره. اتبع هذه التعليمات لتشغيل نموذج الخادم باللغة التي تختارها:
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
.