توضّح هذه السلسلة من الإرشادات المفصّلة جميع الأجزاء المتحركة في إضافة Classroom فعّالة. يتناول كلّ خطوة من خطوات الجولة التفصيلية مفاهيم محدّدة، ويطبّقها في تطبيق ويب واحد. الهدف هو مساعدتك في إعداد إضافة فعّالة وضبطها وتشغيلها.
يجب أن تتفاعل الإضافة مع مشروع Google Cloud. إذا لم تكن على دراية بخدمة Google Cloud، ننصحك بقراءة أدلة البدء. يمكنك إدارة بيانات الاعتماد والوصول إلى واجهة برمجة التطبيقات وحزمة تطوير البرامج (SDK) في Google Workspace Marketplace من خلال Google Cloud Console. لمزيد من المعلومات عن حزمة تطوير البرامج (SDK) في Marketplace، يُرجى الانتقال إلى صفحة دليل إدراج التطبيقات في Google Workspace Marketplace .
يغطّي هذا الدليل المواضيع التالية:
- استخدام Google Cloud لإنشاء صفحة لعرضها في عنصر iframe في Classroom
- إضافة ميزة "الدخول المُوحَّد" (SSO) من Google والسماح للمستخدمين بتسجيل الدخول
- إجراء طلبات من واجهة برمجة التطبيقات لإرفاق الإضافة بواجب
- تلبية المتطلبات الرئيسية لإرسال الإضافة والميزات المطلوبة
يفترض هذا الدليل أنّك على دراية بالبرمجة والمفاهيم الأساسية لتطوير الويب. ننصحك بشدة بقراءة دليل إعداد المشروع قبل البدء في الإرشادات المفصّلة. تحتوي هذه الصفحة على تفاصيل مهمة حول الإعدادات لا يتم تناولها بالكامل في الإرشادات المفصّلة.
أمثلة على العناصر المنفّذة
يتوفّر مثال مرجعي كامل بلغة Python. تتوفّر أيضًا عناصر منفّذة جزئية بلغة Java وNode.js. تمثّل هذه العناصر المنفّذة مصادر رمز المثال الذي يظهر في الصفحات اللاحقة.
أماكن التنزيل
تتوفّر أمثلة Python وJava في مستودعات GitHub:
يمكن تنزيل نموذج Node.js كملف مضغوط:
المتطلبات الأساسية
يُرجى مراجعة الأقسام التالية لإعداد مشروع جديد للإضافات.
شهادة HTTPS
يمكنك استضافة تطبيقك على أي بيئة تطوير، ولكن لا تتوفّر إضافة Classroom إلا من خلال https://. لذلك، تحتاج إلى خادم مزوّد بتشفير طبقة المقابس الآمنة (SSL) لنشر تطبيقك أو اختباره ضِمن عنصر iframe الخاص بالإضافة.
يمكنك استخدام localhost مع شهادة طبقة المقابس الآمنة (SSL). ننصحك باستخدام mkcert إذا
كنت بحاجة إلى إنشاء شهادة للتطوير المحلي.
مشروع على السحابة الإلكترونية من Google
عليك إعداد مشروع على 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-envsource .classroom-addon-env/bin/activate
يتوفّر ملف requirements.txt في كل دليل فرعي من أدلة الإرشادات المفصّلة في الأمثلة التي تم تنزيلها. يمكنك تثبيت المكتبات المطلوبة بسرعة باستخدام pip. استخدِم الأوامر التالية لتثبيت المكتبات المطلوبة للإرشادات المفصّلة الأولى.
cd flask/01-basic-apppip install -r requirements.txt
Node.js
يستخدم مثال Node.js إطار عمل Express. يمكنك تنزيل رمز المصدر الكامل من الروابط المقدَّمة.
يتطلّب هذا المثال Node.js الإصدار 16.13 أو إصدارًا أحدث.
ثبِّت وحدات node المطلوبة باستخدام npm.
npm installJava
يستخدم مثال Java إطار عمل Spring Boot. يمكنك تنزيل رمز المصدر الكامل من الروابط المقدَّمة.
ثبِّت Java 11 أو إصدارًا أحدث إذا لم يكن مثبّتًا على جهازك.
يمكن لتطبيقات Spring Boot استخدام Gradle أو Maven للتعامل مع عمليات التصميم وإدارة التبعيات. يتضمّن هذا المثال برنامج Maven المغلّف الذي يضمن عملية تصميم ناجحة بدون الحاجة إلى تثبيت Maven نفسه.
في الدليل الذي نزّلت فيه المشروع أو استنسخته، شغِّل الأوامر التالية للتأكّد من توفّر المتطلبات الأساسية لتشغيل المشروع.
java --version./mvnw --version
أو على نظام التشغيل Windows:
java -versionmvnw.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 -installmkcert -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.