عرض أول 100 ملف &؛ المجلدات في Google Drive

1. استخدام واجهات برمجة التطبيقات في Google Workspace

يعرّفك هذا الدرس التطبيقي على كيفية استخدام واجهات برمجة التطبيقات المستندة إلى HTTP والمتوافقة مع REST في Google Workspace (المعروفة سابقًا باسم G Suite). سيتم تنفيذ المثال بلغة Python لتوفير الوقت ولأنّها متاحة، ولكن يمكنك أيضًا اختيار استخدام لغة التطوير المفضّلة لديك. ستتعرّف على مواضيع تمهيدية، مثل كيفية استخدام "وحدة تحكّم المطوّرين" لإنشاء المشاريع وإدارتها، والحصول على بيانات اعتماد التفويض، وتثبيت مكتبات برامج واجهة برمجة التطبيقات. بعد الانتهاء من الإجراءات الرسمية، ستكتب تطبيقًا لعرض أول 100 ملف ومجلد في Google Drive باستخدام واجهة برمجة التطبيقات.

أهداف الدورة التعليمية

  • إنشاء مشروع باستخدام Google/Cloud Developers Console
  • الحصول على بيانات اعتماد تطبيق OAuth2 واستخدامها في تطبيقك
  • التعرّف على استخدام مكتبات العملاء في Google APIs
  • كتابة تطبيقات باستخدام واجهات برمجة التطبيقات من Google وواجهات برمجة التطبيقات في Google Workspace
  • الحصول على معلومات الملفات والمجلدات باستخدام Google Drive API

المتطلبات

  • إمكانية الوصول إلى الإنترنت ومتصفّح ويب
  • حساب Google (قد تتطلّب حسابات Google Workspace موافقة المشرف)
  • الإلمام بالأنظمة المتوافقة مع معيار POSIX، مثل Linux وMac OS X
  • إمكانية إنشاء ملفات مصدر باستخدام أداة تعديل الرموز أو أوامر shell
  • مهارات أساسية في Python (الإصدار 2 أو 3)، ولكن يمكنك استخدام أي لغة متوافقة
  • بعض الملفات و/أو المجلدات في Google Drive

2. استطلاع

كيف ستستخدم هذا الدرس التطبيقي حول الترميز؟

قراءة المحتوى فقط قراءة المحتوى وإكمال التمارين

ما هو تقييمك لتجربتك مع أدوات المطوّرين وواجهات برمجة التطبيقات في Google Workspace؟

مبتدئ متوسط متقدّم

3- نظرة عامة

في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية:

  1. تنزيل مكتبة برامج Google APIs للغة Python
  2. إنشاء مشروع جديد في Google/Cloud Developers Console
  3. الحصول على بيانات الاعتماد اللازمة لتطبيقك
  4. استخدام بيانات الاعتماد هذه للوصول إلى Google Drive API

إذا كنت تفضّل عدم استخدام Python، يمكنك تنفيذ درس الترميز العملي باستخدام أداة للمطوّرين المفضّلة لديك (تتوفّر مكتبات برامج اللغات المتوافقة هنا) والرجوع إلى أمثلة Python كرمز زائف (قابل للتنفيذ).

4. تأكيد بيئة Python

يتطلّب منك هذا الدرس التطبيقي حول الترميز استخدام لغة Python (مع أنّ العديد من اللغات متوافقة مع مكتبات برامج Google APIs، لذا يمكنك إنشاء شيء مماثل باستخدام أداة للمطوّرين المفضّلة لديك واستخدام Python كرمز زائف). على وجه الخصوص، يتوافق هذا الدرس التطبيقي حول الترميز مع الإصدارَين 2 و3 من Python، ولكن ننصحك بالانتقال إلى الإصدار 3.x في أقرب وقت ممكن.

Cloud Shell هي أداة سهلة الاستخدام متاحة للمستخدمين مباشرةً من Cloud Console ولا تتطلّب بيئة تطوير محلية، لذا يمكن إكمال هذا البرنامج التعليمي بالكامل على السحابة الإلكترونية باستخدام متصفّح ويب. تكون Cloud Shell مفيدة بشكل خاص إذا كنت تطوّر أو تخطّط لمواصلة التطوير باستخدام منتجات وواجهات برمجة تطبيقات GCP. وبشكل أكثر تحديدًا في هذا الدرس العملي، تم تثبيت كلا الإصدارين من Python مسبقًا في Cloud Shell.

يتم أيضًا تثبيت IPython في Cloud Shell... وهو مترجم Python تفاعلي عالي المستوى ننصح به، خاصةً إذا كنت جزءًا من مجتمع علوم البيانات أو تعلُّم الآلة. إذا كان الأمر كذلك، فإنّ IPython هو المترجم التلقائي لأوراق ملاحظات Jupyter بالإضافة إلى Colab، وهي أوراق ملاحظات Jupyter مستضافة بواسطة Google Research.

يُفضّل IPython استخدام مفسّر Python 3 أولاً، ولكنّه يعود إلى Python 2 في حال عدم توفّر الإصدار 3.x. يمكن الوصول إلى IPython من Cloud Shell، ولكن يمكن أيضًا تثبيته في بيئة تطوير محلية. اخرج من خلال الضغط على ‎ ^D (Ctrl-d) واقبل العرض للخروج. سيظهر الناتج التالي كمثال على بدء ipython:

$ ipython
Python 3.7.3 (default, Mar 4 2020, 23:11:43)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.13.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

إذا لم يكن IPython هو الخيار المفضّل لديك، يمكنك استخدام مترجم Python تفاعلي عادي (إما Cloud Shell أو بيئة التطوير المحلية) (يمكنك أيضًا الخروج باستخدام ‎ ^D):

$ python
Python 2.7.13 (default, Sep 26 2018, 18:42:22)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
$ python3
Python 3.7.3 (default, Mar 10 2020, 02:33:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

يفترض هذا الدرس التطبيقي حول الترميز أيضًا أنّ لديك أداة التثبيت pip (أداة إدارة حِزم Python وبرنامج التعيين للاعتماديات). ويتم تضمينها في الإصدارات 2.7.9 أو الإصدارات الأحدث أو الإصدارات 3.4 أو الإصدارات الأحدث. إذا كان لديك إصدار أقدم من Python، يمكنك الاطّلاع على هذا الدليل للحصول على تعليمات التثبيت. استنادًا إلى أذوناتك، قد تحتاج إلى إذن sudo أو إذن وصول المستخدم المميّز، ولكنّ هذا لا يحدث عادةً. يمكنك أيضًا استخدام pip2 أو pip3 بشكل صريح لتنفيذ pip لإصدارات معيّنة من Python.

يفترض بقية الدرس التطبيقي العملي أنّك تستخدم الإصدار 3 من Python، وسيتم تقديم تعليمات خاصة بالإصدار 2 من Python إذا كانت تختلف بشكل كبير عن الإصدار 3.x.

*إنشاء بيئات افتراضية واستخدامها

هذا القسم اختياري ولا يُطلب إلا من المستخدمين الذين عليهم استخدام بيئة افتراضية لهذا الدرس العملي (وفقًا للشريط الجانبي التحذيري أعلاه). إذا كان لديك الإصدار 3 من Python فقط على جهاز الكمبيوتر، يمكنك ببساطة إصدار هذا الأمر لإنشاء بيئة افتراضية باسم my_env (يمكنك اختيار اسم آخر إذا أردت):

virtualenv my_env

ومع ذلك، إذا كان لديك الإصداران 2 و3 من Python على جهاز الكمبيوتر، ننصحك بتثبيت بيئة افتراضية للإصدار 3 من Python يمكنك إنشاؤها باستخدام -p flag على النحو التالي:

virtualenv -p python3 my_env

أدخِل بيئة virtualenv التي أنشأتها حديثًا من خلال "تفعيلها" على النحو التالي:

source my_env/bin/activate

تأكَّد من أنّك في البيئة من خلال ملاحظة أنّ طلب موجّه الأوامر يسبقه الآن اسم البيئة، أي

(my_env) $ 

من المفترض أن تتمكّن الآن من pip install أي حِزم مطلوبة، وتنفيذ الرمز البرمجي في هذه البيئة، وما إلى ذلك. ومن المزايا الأخرى أنّه في حال حدوث أي خطأ أو تلف في عملية تثبيت Python، يمكنك إزالة هذه البيئة بأكملها بدون التأثير في بقية نظامك.

5- تثبيت مكتبة برامج Google APIs للغة Python

يتطلّب هذا الدرس العملي استخدام مكتبة برامج Google API للغة Python، لذا إما أن تكون عملية التثبيت بسيطة، أو قد لا تحتاج إلى إجراء أي شيء على الإطلاق.

لقد نصحناك سابقًا باستخدام Cloud Shell لتسهيل الأمر عليك. يمكنك إكمال البرنامج التعليمي بأكمله من متصفّح ويب في السحابة الإلكترونية. سبب آخر لاستخدام Cloud Shell هو أنّ العديد من أدوات التطوير الشائعة والمكتبات الضرورية مثبّتة مسبقًا.

*تثبيت مكتبات البرامج

(اختياري) يمكن تخطّي هذه الخطوة إذا كنت تستخدم Cloud Shell أو بيئة محلية سبق لك تثبيت مكتبات البرامج فيها. ما عليك سوى تنفيذ هذا الإجراء إذا كنت بصدد التطوير محليًا ولم يسبق لك تثبيت هذه الأدوات (أو إذا لم تكن متأكدًا من تثبيتها). أسهل طريقة هي استخدام pip (أو pip3) لإجراء عملية التثبيت (بما في ذلك تحديث pip نفسه إذا لزم الأمر):

pip install -U pip google-api-python-client oauth2client

تأكيد التثبيت

يؤدي هذا الأمر إلى تثبيت مكتبة البرامج وأي حِزم تعتمد عليها. سواء كنت تستخدم Cloud Shell أو بيئتك الخاصة، تحقَّق من تثبيت مكتبة البرامج عن طريق استيراد الحِزم اللازمة والتأكّد من عدم حدوث أي أخطاء في الاستيراد (أو الإخراج):

python3 -c "import googleapiclient, httplib2, oauth2client"

إذا كنت تستخدم Python 2 بدلاً من ذلك (من Cloud Shell)، ستتلقّى تحذيرًا بأنّه تم إيقاف إتاحة هذه اللغة:

*******************************************************************************
Python 2 is deprecated. Upgrade to Python 3 as soon as possible.
See https://cloud.google.com/python/docs/python2-sunset

To suppress this warning, create an empty ~/.cloudshell/no-python-warning file.
The command will automatically proceed in seconds or on any key.
*******************************************************************************

بعد أن تتمكّن من تنفيذ أمر "الاختبار" الخاص بعملية الاستيراد بنجاح (بدون أخطاء أو نتائج)، ستكون مستعدًا لبدء التواصل مع Google APIs.

ملخّص

بما أنّ هذا الدرس العملي هو درس تمهيدي، نفترض أنّك جديد في استخدام واجهات برمجة التطبيقات من Google وواجهات برمجة التطبيقات في Google Workspace. إذا كانت لديك خبرة في إنشاء المشاريع ومعرّفات عميل OAuth الخاصة بمنح إذن المستخدم إذا كان الأمر كذلك، أنشئ مشروعًا أو أعِد استخدام مشروع حالي، وأنشئ أو أعِد استخدام معرّف عميل OAuth حالي، وتخطَّ الوحدتَين النمطيتَين التاليتَين وانتقِل مباشرةً إلى "عرض تطبيق ملفات ومجلدات Drive" أو انتقِل إلى "استخدام متقدّم لـ DevConsole" لمراجعة هذه الخطوات مع توجيهات أقل.

6. تحديد المشروع في Cloud Console

يتطلّب التطبيق الذي يستخدم Google APIs مشروعًا. تتم إدارة هذه المشاريع في Google Cloud Developers Console أو ببساطة "devconsole". في هذا الدرس التطبيقي حول الترميز، سنستخدم Google Drive API فقط، لذا لدينا رابط سحري (في الخطوة 1 أدناه) يتيح لك إجراء ما يلي:

  • ينقلك إلى devconsole
  • توجيهك خلال عملية إنشاء مشروع جديد (أو اختيار مشروع حالي)
  • تفعيل Drive API تلقائيًا

لنبدأ!

  1. انتقِل إلى console.developers.google.com/start/api?id=drive وسجِّل الدخول إلى حسابك على Google.
  2. إذا لم يكن لديك أي مشاريع بعد، ستظهر لك هذه الشاشة لقبول بنود خدمة Google APIs:

e3b2076ba58a7cd7.png بعد قبول البنود، سيتم إنشاء مشروع جديد باسم "مشروعي"، وسيتم تفعيل Drive API تلقائيًا. 3- إذا سبق لك إنشاء مشروع (ربما في codelab السابق؟)، ستظهر لك هذه الشاشة بدلاً من ذلك: 50b3b8ace6721f1f.png عند النقر على القائمة المنسدلة إنشاء مشروع، اختَر مشروعًا حاليًا أو أنشئ مشروعًا جديدًا. 69db3867445ad9e5.png بعد إجراء اختيارك (مشروع جديد أو حالي)، سيتم تفعيل Drive API تلقائيًا. 4. ستعرف أنّه تم تفعيل Drive API من خلال التأكيد التالي: 365e7de1377493bb.png 5. انقر على الانتقال إلى بيانات الاعتماد للانتقال إلى الخطوة التالية.

7. *الموافقة على طلبات واجهة برمجة التطبيقات (تفويض المستخدم)

يمكن تخطّي هذا القسم إذا سبق لك إنشاء بيانات اعتماد تفويض حساب المستخدم وكنت على دراية بالعملية. يختلف ذلك عن تفويض حساب الخدمة الذي تختلف تقنيته، لذا يُرجى مواصلة القراءة أدناه.

مقدمة عن التفويض (بالإضافة إلى بعض المصادقة)

لكي يتمكّن تطبيقك من إرسال طلبات إلى واجهات برمجة التطبيقات، يجب أن يكون لديه الإذن المناسب. تصف كلمة المصادقة المشابهة بيانات اعتماد تسجيل الدخول، إذ يمكنك إثبات هويتك عند تسجيل الدخول إلى حسابك على Google باستخدام اسم مستخدم وكلمة مرور. بعد إتمام عملية المصادقة، تتمثّل الخطوة التالية في تحديد ما إذا كنت مخوَّلاً بالوصول إلى البيانات، مثل ملفات الكائنات الثنائية الكبيرة في Cloud Storage أو الملفات الشخصية للمستخدم على Google Drive، أو ما إذا كان الرمز مخوَّلاً بذلك.

تتيح Google APIs عدة أنواع من التفويض، ولكن النوع الأكثر شيوعًا لمستخدمي واجهات برمجة التطبيقات في Google Workspace هو تفويض المستخدم لأنّ التطبيق النموذجي في هذا الدرس التطبيقي حول الترميز يتيح الوصول إلى البيانات الخاصة بالمستخدمين النهائيين. يجب أن يمنح هؤلاء المستخدمون النهائيون تطبيقك الإذن بالوصول إلى بياناتهم. وهذا يعني أنّ الرمز البرمجي يجب أن يحصل على بيانات اعتماد OAuth2 الخاصة بحساب المستخدم.

للحصول على بيانات اعتماد OAuth2 لتفويض المستخدم، ارجع إلى "إدارة واجهات برمجة التطبيقات" وانقر على علامة التبويب "بيانات الاعتماد" في شريط التنقّل الأيمن:

Y33PZ_rJC1y7NH7Rrvq1kN_WxZ9CppDGJK8tTSaha298Jlm5pMqgnyweIO4oX34fcLy0_VI4gihYu5wpEM_LeJg1iDAFoidhUVyfqJX3QTzODQ_OGjHLXYBxPpUvihCJi9JGwvMREw

عند الوصول إلى هناك، ستظهر لك جميع بيانات الاعتماد في ثلاثة أقسام منفصلة:

ComE4qh76dwZbIehkDUm1QawHGia_qVe7w7rkmgbeo_wjWS--kqXCt4_zvm55iy_RXA8dKYKvBxIKazkcYQ8871SA_kNslbvum_n1Ju4k9qJJSMtDhPAnofcvIlqlKm1nu7PBQhmEg

الأول مخصّص لمفاتيح واجهة برمجة التطبيقات، والثاني لمعرّفات عملاء OAuth 2.0، والأخير لحسابات خدمة OAuth2، ونحن نستخدم الخيار الأوسط.

إنشاء بيانات اعتماد

من صفحة "بيانات الاعتماد"، انقر على الزر + إنشاء بيانات اعتماد في أعلى الصفحة، ما يفتح لك مربّع حوار يمكنك من خلاله اختيار "معرّف عميل OAuth":

C7jTddfrczo3GewPGCxbxX13GawtFc6FGvAPFusPc_IW-tr5M6xgXd1OzOHOUTo86WDa9fXiCITogv9b3wAgOcYM7xS3AmVNaPdTxbAynIe_sia2_x3LEPsBrdbX8NjeI2WaHRioOA

في الشاشة التالية، يمكنك تنفيذ إجراءَين: ضبط "شاشة طلب الموافقة" الخاصة بتفويض تطبيقك واختيار نوع التطبيق:

El9_aqPQ6Q9hOsOp3JUC5qnCm_A_BVI-oCEfPk_MsvybnWBmC5lT6CtXSoZ7EQoFzrcBEzo4zF9s8CbhXyo0e-eSY3pZ1zg0BRvT0YssMMhbzEG-gP_jiO8v9q9HYTjg-QW5jJ0RDA

إذا لم تكن قد أعددت شاشة طلب الموافقة، سيظهر لك التحذير في وحدة التحكّم وعليك إعدادها الآن. (يمكنك تخطّي الخطوات التالية إذا سبق لك إعداد شاشة طلب الموافقة).

انقر على "ضبط شاشة طلب الموافقة" حيث يمكنك اختيار تطبيق "خارجي" (أو "داخلي" إذا كنت من عملاء Google Workspace [المعروف سابقًا باسم "G Suite"]):

5w-9R6gPvUHFzODZxXy-0GEhL8ZGDGNea3QtMp1FFYDv5DJ_MIDD21NEh3CzI-GKNzy6bkhH7bohxOG8icQTegiWlavOQhQqhSy7K31Ma3YTI9aAP3P-LmTBanPslX1cnjKLVZBi8A

يُرجى العِلم أنّه لأغراض هذا التمرين، لا يهمّ أيًّا من الخيارَين ستختار لأنّك لن تنشر نموذج درس تطبيقي حول الترميز. سيختار معظم المستخدمين "خارجي" للانتقال إلى شاشة أكثر تعقيدًا، ولكن ما عليك سوى ملء حقل "اسم التطبيق" في أعلى الصفحة:

8e9z_RQz8lumYbDIcBvm57_Gpptn9uhrVQHoRzJ01AJNOFmXloDO7Eg3hhzJZZIU2F5rR0MxTCw-oXVFCq683xUwD4O33pXeuFsOMtM8EZhyjDoYc8Kv4hEoaG0Ztq9ePx6De7YmfA

كل ما تحتاج إليه في هذا الوقت هو اسم تطبيق، لذا اختَر اسمًا يعكس الدرس التطبيقي حول الترميز الذي تجريه، ثم انقر على حفظ.

إنشاء معرّف عميل OAuth (مصادقة حساب المستخدم)

الآن، ارجع إلى علامة التبويب "بيانات الاعتماد" لإنشاء معرّف عميل OAuth2. ستظهر لك هنا مجموعة متنوعة من معرّفات عملاء OAuth التي يمكنك إنشاؤها:

f8reuhsxOUNLcVrEIyRVsmP_fX_ceIlLvEKql1YHwSPW9jk9Mm9fJ0UlfUoi8eRN3QQXar4xtpo071zj6LSczNN7TYY8zB96Dn6ICZuvCAtjIgJSKdMSlX-ZhMuSWFpxxv661aUemw

نحن بصدد تطوير أداة سطر أوامر، وهي أخرى، لذا اختَر هذا الخيار ثم انقر على الزر إنشاء. اختَر اسمًا لمعرّف العميل يعكس التطبيق الذي تنشئه أو استخدِم الاسم التلقائي، وهو عادةً "عميل آخر N".

حفظ بيانات الاعتماد

  1. يظهر مربّع حوار يتضمّن بيانات الاعتماد الجديدة، انقر على حسنًا لإغلاقه

rAwekj_GNEuVwGbZOYYlGDQjlu4flE61OPEZIUmwMI5vGi3W365UwVCxi0mVNhg4WZSSczZywrZZ6NDM_U0FJ4b-TOIMEC189uybOJjgn8F_axesVMopel9RlehRBXdEFhN4d41WGQ

  1. بالعودة إلى صفحة "بيانات الاعتماد"، انتقِل للأسفل إلى قسم "معرّفات عملاء OAuth2" وابحث عن رمز التنزيل aAmje6kT_xSUM4BKIlPREpjosx7C_xxwpWqBgiGVfVWxQ8nnQOfxTPhuU0QwSnmbjykZffGrqyP1nnKrEQ7D7OqYaGw_Uzscs9gX2RwwP4AmvtHIiTFLa0gkprzJSjG9pQSx7HtmSQ وانقر عليه في أسفل يسار معرّف العميل الذي أنشأته حديثًا. x-vb-sKZy-X8a1X4uTsBWotSd4wn0PGt4mHMNv6DUrq5J5ihpujUyTiIVr5SHw0p2ZDy0KTP-zqOaFX-Az9BYDWG90KNFmsRLTUOo1mUVk7dYRJiK3VwYJNU0bbxjsbbpqcTr5_oLw
  2. سيؤدي ذلك إلى فتح مربّع حوار لحفظ ملف باسم client_secret-LONG-HASH-STRING.apps.googleusercontent.com.json، من المحتمل أن يكون ذلك في مجلد عمليات التنزيل. ننصحك باختيار اسم أسهل، مثل client_secret.json (وهو الاسم الذي يستخدمه نموذج التطبيق)، ثم حفظه في الدليل أو المجلد الذي ستنشئ فيه نموذج التطبيق في هذا الدرس التطبيقي حول الترميز.

ملخّص

بعد الحصول على بيانات الاعتماد، يمكنك الآن الوصول إلى Drive API من تطبيقك، مع الأخذ في الاعتبار أنّ الغرض من معرّف عميل OAuth هو أن يمنح المستخدمون تطبيقك الإذن بالوصول إلى بياناتهم في Google Drive.

NOTE: تتوفّر المزيد من التفاصيل حول إنشاء المشاريع وتفعيل واجهات برمجة التطبيقات والحصول على بيانات الاعتماد يدويًا، أي بدون استخدام "المعالج" أعلاه، بعد الانتهاء من هذا الدرس التطبيقي حول الترميز لمزيد من الدراسة.

8. عرض تطبيق ملفات ومجلدات Drive

في بيئة التطوير المحلية أو في Cloud Shell، أنشئ في الدليل نفسه الذي يوجد فيه ملف بيانات اعتماد client_id.json ملف Python جديدًا باسم drive_list.py وأضِف أسطر الرمز البرمجي أدناه:

from __future__ import print_function

from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools

SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
    creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))

files = DRIVE.files().list().execute().get('files', [])
for f in files:
    print(f['name'], f['mimeType'])

بنية التطبيق

يتضمّن هذا التطبيق ثلاثة أقسام رئيسية:

  1. عمليات استيراد في Python لإضافة وظائف المكتبة
  2. الحصول على بيانات اعتماد التطبيق
  3. استرداد أسماء الملفات والمجلدات وأنواع MIME في Google Drive الخاص بالمستخدم وعرضها

NOTE: يتوفّر شرح مفصّل للرمز البرمجي ومراجعة سطر بسطر بعد انتهاء هذا الدرس التطبيقي حول الترميز لمزيد من الدراسة.

تشغيل التطبيق

أدخِل اسمًا لهذا الملف، مثل drive_list.py. في المرة الأولى التي تنفّذ فيها البرنامج النصي، لن يكون لديك الإذن بالوصول إلى ملفات المستخدم على Drive (ملفاتك). تظهر النتيجة على النحو التالي مع إيقاف التنفيذ مؤقتًا:

$ python3 ./drive_list.py
/usr/local/lib/python3.6/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory
 warnings.warn(_MISSING_FILE_MESSAGE.format(filename))

Your browser has been opened to visit:
  https://accounts.google.com/o/oauth2/auth?client_id=LONG-STRING.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code

If your browser is on a different machine then exit and re-run this
application with the command-line parameter

 --noauth_local_webserver

من بيئة تطوير على الجهاز

يتم إيقاف النص البرمجي لسطر الأوامر مؤقتًا عند فتح نافذة المتصفّح وعرض مربّع حوار أذونات OAuth2:

c2648f37bcb7a0c1.png

هذا هو المكان الذي يطلب فيه التطبيق من المستخدم الأذونات التي يطلبها الرمز (من خلال المتغيّر SCOPES). في هذه الحالة، تكون إمكانية عرض بيانات وصفية للملف من حساب Google Drive الخاص بالمستخدم. نعم، تظهر نطاقات الأذونات هذه في الرموز البرمجية كمعرّفات موارد موحّدة (URI)، ولكن يتم ترجمتها إلى اللغة المحدّدة حسب اللغة في نافذة مربّع حوار مسار OAuth2. يجب أن يمنح المستخدم إذنًا صريحًا للأذونات المطلوبة، وإلا سيؤدي جزء "تنفيذ المسار" من الرمز إلى طرح استثناء، ولن يستمر النص البرمجي.

NOTE: يستخدم بعض المستخدمين عدة متصفّحات، وقد يظهر طلب التفويض في متصفّح غير مفضّل. في هذه الحالة، ما عليك سوى نسخ عنوان URL بالكامل من نافذة المتصفّح التي لا تريد استخدامها ولصقه في شريط العناوين في متصفّح تريد استخدامه.

من Cloud Shell

إذا لم تنتبه وشغّلت البرنامج في Cloud Shell، لن تظهر أي نافذة متصفّح، ما يجعلك عالقًا. تدرك أنّ رسالة التشخيص في أسفل الصفحة كانت مخصّصة لك، وهي هذه الرسالة:

If your browser is on a different machine then exit and re-run this
application with the command-line parameter

 --noauth_local_webserver

عند تشغيلها بهذه الطريقة، ستحصل على الناتج التالي بدلاً من ذلك:

$ python3 drive_list.py --noauth_local_webserver
/usr/local/lib/python3.7/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory
 warnings.warn(_MISSING_FILE_MESSAGE.format(filename))

Go to the following link in your browser:

  https://accounts.google.com/o/oauth2/auth?client_id=xxx.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code

Enter verification code:

باتّباع التعليمات والانتقال إلى علامة تبويب متصفّح مختلفة باستخدام عنوان URL هذا، ستحصل على تجربة مطابقة تقريبًا لما تم وصفه أعلاه لبيئات التطوير المحلية. يكمن الاختلاف الرئيسي في النهاية، حيث تظهر لك شاشة أخرى تحتوي على رمز التحقّق الذي يجب إدخاله في Cloud Shell:

f6da2c335fb7c6a.png

قُصّ هذا الرمز والصقه في نافذة الوحدة الطرفية.

ملخّص

بعد أن ينقر المستخدم على "السماح" و/أو يتم لصق رمز التحقّق في الطلب، سيستمر تشغيل التطبيق، لذا توقَّع رؤية ناتج يتألف من ملفات/مجلدات Drive وأنواع MIME الخاصة بها. في ما يلي مثال من أحد حساباتنا التجريبية:

$ python3 ./drive_list.py
Travel expenses application/vnd.google-apps.spreadsheet
Gmail Add-ons codelab application/vnd.google-apps.script
Google Workspace Developer Intro application/vnd.google-apps.presentation
Baseball Sheets application/vnd.google-apps.folder
My Resume application/vnd.google-apps.document
  . . .

لاحظ في عمليات التنفيذ المتتالية أنّه لن يُطلب منك منح التفويض (لأنّ مكتبات المصادقة خزّنته مؤقتًا)، وسيتم عرض الناتج مباشرةً. أليس من المثير أن ترى مستنداتك في نافذة طرفية للمرة الأولى؟ نحن نعتقد ذلك.

9- الخاتمة

أنت الآن مستعد للتعرّف على المزيد من الميزات حول Drive API أو استكشاف واجهات برمجة تطبيقات أخرى من Google Workspace (Gmail و"مستندات Google" و"جداول بيانات Google" و"العروض التقديمية من Google" و"تقويم Google") وواجهات برمجة تطبيقات أخرى من Google (مثل "خرائط Google" و"إحصاءات Google" وYouTube وما إلى ذلك). تهانينا على إكمال هذه الرحلة الرائعة.

يتوفّر الرمز البرمجي المعروض في هذا الدرس التطبيقي حول الترميز أيضًا في مستودع GitHub على github.com/googlecodelabs/gsuite-apis-intro. (نحرص على أن يكون هذا الدرس التطبيقي حول الترميز متزامنًا مع المستودع). هل نتابع؟ في ما يلي مراجع مختلفة يمكنك الوصول إليها لمساعدتك في التعرّف أكثر على المواد التي يغطيها هذا الدرس التطبيقي حول الترميز، أو إذا كنت تريد استكشاف طرق أخرى للوصول إلى تكنولوجيات Google آليًا.

كما أشرنا سابقًا، إذا لم تكن من مطوّري Python العاديين، ندعوك إلى إعادة تنفيذ مثال الدرس التطبيقي حول الترميز هذا بلغة التطوير المفضّلة لديك. تتوفّر مكتبات البرامج للغات المتوافقة هنا.

دراسة إضافية

بعد أن اكتسبت بعض الخبرة في استخدام Drive API، إليك بعض التمارين المقترَحة لتطوير مهاراتك بشكل أكبر:

  1. ملفات ZIP: اكتب تطبيقًا ينشئ نسخة احتياطية من عدة أرشيفات ZIP على Drive، مع فك ضغطها أثناء التنفيذ ليكون اسم كل ملف ZIP هو اسم المجلد الذي يتم نقل هذه الملفات إليه. ميزة إضافية: إتاحة أرشيفات ZIP المتكرّرة داخل ملفات ZIP أخرى مع تضمين مجلدات Drive داخل مجلدات أخرى إذا لم تتمكّن من حلّ المشكلة، يمكنك الاطّلاع على نموذج تطبيق Node.js هذا.
  2. ألبومات الصور: اكتب بداية أداة لإنشاء ألبومات الصور تحمّل صورًا متعددة إلى Google Drive، وتنظّمها في مجلدات منفصلة حسب الطابع الزمني والموقع الجغرافي. مهمة إضافية: ابحث عن مكتبة مفتوحة المصدر لمعالجة الصور وادمج كل الصور في كل مجلد لتمثيل الأحداث التي ربما تكون قد مررت بها (رحلة أو عشاء أو غير ذلك).
  3. استكشاف Google Cloud Platform: اكتب تطبيقًا يربط بين Google Workspace وGoogle Cloud Platform (GCP). اكتب أداة تحتفظ بنسخة احتياطية من ملفات الصور من Google Drive إلى Google Cloud Storage (GCS)، وهو حل آخر "لتخزين الملفات في السحابة الإلكترونية". قد يبدو الأمر غريبًا، ولكن استخدام GCS سيكون أبسط من Drive بسبب مكتبات البرامج المتقدّمة.
  4. التحليل والتسجيل: يمكنك توسيع نطاق الحلّ إلى الخطوة رقم 3 من خلال تحليل كل صورة تم الاحتفاظ بنسخة احتياطية منها عن طريق تمريرها إلى Google Cloud Vision API والحصول على أهم "التصنيفات" (3 أو 5 أو 10) لما ترصده واجهة برمجة التطبيقات في تلك الصور. لكل صورة، اكتب صفًا في جدول بيانات Google يحتوي على التحليل من Cloud Vision بالإضافة إلى الموقع الجغرافي الذي تم الاحتفاظ بنسخة احتياطية منه على GCS. إذا لم تتمكّن من حلّها، يمكنك الاطّلاع على هذا الدرس التطبيقي حول الترميز في Python.

10. موارد إضافية

الوثائق

الأخبار والإشعارات

دروس تطبيقية أخرى حول الترميز

مبتدئ

متوسّط

إعدادات متقدمة

التطبيقات المرجعية

11. *شرح تفصيلي للتطبيق

يُستخدَم هذا القسم الاختياري للدراسة الذاتية بعد انتهاء الجلسة لملء أي فجوات قد تكون نشأت أو لإجراء المزيد من البحث.

عمليات استيراد في Python لإضافة وظائف المكتبة

from __future__ import print_function

from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
  • تتيح عبارة import الأولى تشغيل هذا الرمز البرمجي على Python 2، ويمكن حذفها تمامًا إذا كنت تستخدم Python 3 فقط.
  • أحد إرشادات أسلوب Python هو فصل عمليات استيراد المكتبة العادية ووحدات الطرف الثالث، وهذا هو الغرض من السطر الفارغ.
  • تستورد عمليات الاستيراد الثلاث التالية الفئات والوظائف اللازمة من مكتبة برامج Google APIs... وكلها مطلوبة لكتابة هذا التطبيق. وفي ما يلي شرح موجز لوظائفها:
  • يركّز googleapiclient على الربط بواجهات Google API
  • توفّر httplib2 برنامج HTTP للعميل كي يستخدمه التطبيق
  • تساعدنا oauth2client في إدارة بيانات اعتماد OAuth2

التفويض والحصول على بيانات اعتماد التطبيق

SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
    creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
  • أذونات التطبيق SCOPES هي الأذونات التي سيطلبها التطبيق من المستخدم الذي يشغّله. للحفاظ على أمان بيانات المستخدمين، لا يمكن تشغيل التطبيقات بدون منحها الإذن بذلك
  • من أفضل الممارسات استخدام الأذونات الأكثر تقييدًا التي يحتاجها تطبيقك ليعمل. لماذا؟
  • أليس من المزعج أن يطلب تطبيق مجموعة كبيرة من الأذونات عند تثبيته أو تشغيله؟ خمن ماذا؟ أنت الآن في الجانب الآخر من المعادلة، وتطلب من المستخدمين منحك كل هذه الأذونات. يؤدي استخدام نطاقات أكثر تقييدًا إلى تحسين تجربة المستخدمين عند تثبيت تطبيقك لأنّك تطلب أذونات وصول أقل.
  • تبدو معظم النطاقات كعناوين URL طويلة، ونطاق البيانات الوصفية في Drive ليس استثناءً من ذلك.
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
  • يجب توفّر رمز مميّز لكي تتواصل التطبيقات مع خوادم Google. سيتم حفظ الرموز المميزة الصالحة التي يتم تلقّيها من Google في ملف تخزين الرموز المميزة، storage.json. إذا لم تحفظ هذه الرموز المميزة، عليك إعادة منح الإذن لتطبيقك في كل مرة تشغّله فيها.
store = file.Storage('storage.json')
  • يتحقّق هذا التطبيق أولاً مما إذا كانت لدينا بيانات اعتماد صالحة مخزّنة (راجِع عبارة if الشرطية).
creds = store.get()
if not creds or creds.invalid:
  • إذا لم تكن لديك بيانات اعتماد أو انتهت صلاحيتها، يجب إنشاء مسار تفويض جديد [من خلال oauth2client.client.flow_from_clientsecrets()] من معرّف عميل OAuth وسرّه في ملف client_id.json الذي نزّلته.
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
  • بعد أن يتضمّن تطبيقك مسارًا، يجب تنفيذه لعرض شاشة أذونات OAuth2 للمستخدم [عبر oauth2client.tools.run_flow()] الموضّحة والموضّحة أعلاه.
    creds = tools.run_flow(flow, store)
  • من خلال النقر على السماح، يوافق المستخدمون على أن يصل تطبيقك إلى بيانات وصفية لملفاتهم على Google Drive، وترسل خوادم Google رموزًا مميزة للوصول إلى واجهة برمجة التطبيقات. ويتم عرضها على شكل creds وتخزينها مؤقتًا في الملف storage.json.
  • في هذه المرحلة، سيصبح تطبيقك مزوّدًا ببيانات اعتماد صالحة لإجراء طلبات بيانات من واجهة برمجة التطبيقات. يؤدي استدعاء googleapiclient.discovery.build() إلى إنشاء نقطة نهاية خدمة لواجهة برمجة التطبيقات التي تستخدمها.
  • لاستخدام build()، يجب إدخال اسم واجهة برمجة التطبيقات ('drive') والإصدار المطلوب ('v3' حاليًا).
  • المَعلمة الأخيرة هي عميل HTTP يتم استخدامه لطلبات البيانات من واجهة برمجة التطبيقات المشفرة.
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))

استرداد أول 100 ملف/مجلد في Drive وأنواع MIME وعرضها)

files = DRIVE.files().list().execute().get('files', [])
for f in files:
    print(f['name'], f['mimeType'])
  • يستدعي السطر التالي من الرمز البرمجي الطريقة list() في المجموعة files() لواجهة برمجة التطبيقات Drive API لإنشاء الطلب، والذي يتم استدعاؤه على الفور باستخدام execute(). يتم عرض dict Python، ومن خلاله نطلب المفتاح 'files' للحصول على 100 اسم ملف ومجلد من Google Drive الخاص بالمستخدم (أو أقل إذا كان لديك عدد أقل من الملفات).
  • لماذا 100؟ هذا هو الخيار التلقائي من DRIVE.files().list(). إذا أردت تغيير هذا الرقم، مثلاً إلى 10 ملفات أو 1000 ملف فقط، أضِف المَعلمة pageSize إلى طلبك: DRIVE.files().list(pageSize=10). إليك المستندات لمعرفة المزيد من الخيارات.
  • يعرض الجزء الأخير من النص البرمجي أسماء الملفات وأنواع MIME الخاصة بها.

لقد كتبت الآن تطبيقك الأول الذي يستخدم Google REST API... تهانينا! وبصرف النظر عن عمليات الاستيراد ورمز التفويض، لا يتضمّن هذا النص البرمجي سوى سطرَين من الرموز البرمجية (كما هو موضّح أعلاه). تعمل معظم واجهات Google APIs بطريقة مشابهة، ولن تحتاج إلا إلى إنشاء نقاط نهاية الخدمة لكل واجهة تريد استخدامها.

استخدام أكثر من واجهة برمجة تطبيقات واحدة من Google في تطبيق

نعم، يمكنك بالتأكيد استخدام أكثر من واجهة برمجة تطبيقات واحدة في التطبيق نفسه. في ما يلي مقتطف الرمز من Python لتطبيق يعيد استخدام عميل HTTP نفسه وينشئ نقاط نهاية خدمة ثلاث لـ Google APIs (نعم، مع 3 SCOPES مختلفة أيضًا):

SCOPES = (
    'https://www.googleapis.com/auth/drive',
    'https://www.googleapis.com/auth/spreadsheets.readonly',
    'https://www.googleapis.com/auth/presentations',
)

    . . .

HTTP   = creds.authorize(Http())
DRIVE  = discovery.build('drive',  'v3', http=HTTP)
SHEETS = discovery.build('sheets', 'v4', http=HTTP)
SLIDES = discovery.build('slides', 'v1', http=HTTP)

نتصوّر أنّ هذا الرمز البرمجي يمكن أن يكون جزءًا من تطبيق ينشئ عروضًا تقديمية متعددة (Slides API) استنادًا إلى بيانات جداول البيانات (Sheets API) ويستخدم نموذجًا للشرائح يتم نسخه (Drive API) لكل عرض تقديمي يتم إنشاؤه. على الرغم من عدم توفّر تطبيق من هذا النوع، من المفترض أن تتمكّن من إنشاء تطبيق مشابه باستخدام عينتَين حاليتَين أنشأهما فريق Google Workspace ككتل إنشائية:

  • استبدال النصوص والصور في الشرائح ( منشور المدوّنة وفيديو): يتم استخدام Drive API لنسخ مجموعة نماذج شرائح، ثم يتم استخدام Slides API لتغيير العناصر النائبة للنصوص والصور
  • إنشاء شرائح من بيانات جدول بيانات ( منشور المدوّنة وفيديو): لقراءة البيانات من جدول بيانات (Sheets API) وإنشاء شرائح (واجهة برمجة تطبيقات "العروض التقديمية من Google") استنادًا إلى هذه البيانات

التحدي الذي يواجهك هو إنشاء هذا التطبيق.

12. *الاستخدام المتقدّم لأداة devconsole

في هذا القسم الاختياري، سنشرح كيفية إنشاء مشاريع في devconsole وتفعيل واجهات برمجة التطبيقات والحصول على بيانات الاعتماد، كل ذلك بدون استخدام المعالج كما هو موضّح أعلاه في الدرس العملي. هذه الطريقة مخصّصة للمستخدمين المتوسطي الخبرة الذين يمكنهم إجراء ذلك يدويًا أو يريدون تعلّم كيفية إجراء ذلك.

تحديد المشروع في Cloud Console

في كل مرة تكتب فيها تطبيقًا باستخدام واجهات Google API، يجب أن يكون لديك مشروع. يمكنك إعادة استخدام مشروع حالي أو إنشاء مشروع جديد. يتم ذلك في Cloud Console. توفّر بعض دروس البرمجة رابطًا سحريًا (أي مثل معالج الإعداد) يتيح لك البدء بسرعة وتخطّي العديد من الخطوات المطلوبة. ولكن ليس جميعها كذلك، لذا فإنّ هذه التعليمات تهدف إلى تقديم إرشادات عامة حول كيفية إنشاء المشاريع.

يمكنك إنشاء مشاريع من معظم الشاشات في Cloud Console، طالما سجّلت الدخول باستخدام بيانات اعتماد Google وظهرت لك قائمة منسدلة للمشاريع في أعلى وحدة التحكّم. يُرجى العِلم أنّ معظم لقطات الشاشة هنا مأخوذة من "أداة إدارة واجهات برمجة التطبيقات" المعروفة أيضًا باسم "وحدة تحكّم المطوّرين" (يمكن الوصول إليها بسهولة من خلال النقر على "أداة إدارة واجهات برمجة التطبيقات" في شريط التنقّل الأيمن أو من خلال توجيه المتصفّح مباشرةً إلى console.developers.google.com).

  1. إذا لم يكن لديك أي مشاريع بعد، قد يتم نقلك إلى...
  2. صفحة لوحة البيانات: Gwkk2zcSPOHlRzCGsmBDqfdsEMopOgJyJzh6TunpVFOP3R7bN0-iGt81mNueGxoAei6wCqgQBENsamw3v4ozZJtQgKva6v_90dYJ-rvQjUn9U89avlG1tepDYT9HHjZmYixLD0hACQ
  3. صفحة المكتبة: NqfejNuo6fJfiTXERiCNAFTnno1JGgudf7M2zVyM9DzXP4E6ruoVxHvFQOPW-HFL5SZvm-WohzPTf7njBS9VCwuu4XnwhQ7CB83tNkH0jsYEx31hO6UMBVHPJS1BMjidg5kh-c7MEw
  4. أو صفحة فارغة تمامًا: LcJ-wgOFlYa9uZm46fwUkfFTkXIcbhuk607KDaCz8_8NM09RHblz6T5JoWhH7uwSE2q6hKW9XnlutzUqd8yvRAEXFzQjqNNTuscj19yKGkMjbPixeUB8-F1y4Tz7eCpeOEzBUw70yw إذا حدثت لك هذه المشكلة، ما عليك سوى إعادة تحميل المتصفح للانتقال إلى صفحة المكتبة.
  5. سواء كنت في صفحة لوحة البيانات أو صفحة المكتبة، انقر على أداة اختيار المشروع في أعلى الصفحة: 3f5REVgveKDcJ8wG2C9gduFBftJb6RNtdQQJ79vwFmQCMU8_t_vxja8jPGIK-ZrpjSqGkRkY4k02xth-7FWNPj4GZUdcBmKQe97LporGaLvwIFzzR5wtH5mEEoA1a74_fnrh9YAqqg
  6. بعد ذلك، سيظهر مربّع حوار أداة الاختيار. انقر على رمز "+" في الجانب الأيسر لإنشاء مشروع جديد: jNzs1bp1eWkpJT3S3AGTm9ejYT2mB3rEd1QajOhO0AR3YxcwaCcF4WlMzdmgOFtlIPQfGEMUysM6m7r89_Fc0Dyy--mjPhCEKdLRZjaozLOvoZOzKtIxdMoWFHCVc2N1K-2HES_k4Q
  7. بعد النقر على "+"، ستظهر صفحة مشروع جديد. تحصل جميع حسابات المستهلكين على 12 مشروعًا تلقائيًا. قبل إنشاء مشروعك الأول، عليك قبول بنود خدمة Google APIs: bCB0sQ6k5nfrajlhc-S61MVzyYYBqu6XVNKeRDzXNvKZUNlSeVJSLbkP8sPNi5A-5hWIFzhsQ5R_ER9BBb2bE_B02c1neY2iO5SSe6XDFldppsXbkWm63-0l3ugtSDQS-TeM1d773w

بعد إجراء ذلك، ستختفي أسئلة طلب عنوان البريد الإلكتروني وبنود الخدمة عند إنشاء مشاريع مستقبلية:

Pj31ZKoAAnw_JiSz8io7e4yC2Xh3voETusvePf0DS64IMB4aVy9CtANg2r-2NgPxLjbqcfd-Vs33ZNdN7Diz7sZo3j-MKS83SuNXlhGT8ivdhpIvizP1dsYeK1MBQ4HlDZA5aQkIhg 5. إذا سبق لك إنشاء مشروع واحد على الأقل، سيتم نقلك بعد تسجيل الدخول إلى لوحة بيانات آخر مشروع عملت عليه. من هناك، أنشئ مشروعًا جديدًا كما لو كنت ستختار اختيار مشروع > +. 6. بعد إنشاء مشروعك الجديد، ستعود إلى صفحة لوحة البيانات: ana4q1H1Q8KNTBEVb62Cc6NVA8VZbxb6BLgf4-bLqLV-p7n8UWv3WW3FN-49CE0x1kARav3pelxOBwNuUDELmitMRFhUNXuaw9-CH9DO3Lek_ifnaI3ZsxSy67Z1UsBO95SPFqlf8Q

لقد أنشأت الآن مشروعًا بنجاح وأصبحت مستعدًا للمتابعة من خلال اختيار واجهات برمجة التطبيقات التي تريد استخدامها في مشروعك.

تفعيل واجهات Google APIs

قبل أن تتمكّن من بدء استخدام واجهات Google APIs، يجب تفعيلها. يوضّح المثال أدناه الخطوات التي يجب اتّخاذها لتفعيل Cloud Vision API. في هذا الدرس العملي، قد تستخدم واجهة برمجة تطبيقات واحدة أو أكثر، ويجب اتّباع خطوات مشابهة لتفعيلها قبل الاستخدام.

من Cloud Shell

باستخدام Cloud Shell، يمكنك تفعيل واجهة برمجة التطبيقات باستخدام الأمر التالي:

gcloud services enable vision.googleapis.com

من Cloud Console

يمكنك أيضًا تفعيل Vision API في "أداة إدارة واجهات برمجة التطبيقات". من Cloud Console، انتقِل إلى إدارة واجهة برمجة التطبيقات واختَر "المكتبة".

mg03by3QV6kco0rVVV_8IA6VobAoMG4Yoyl-PofNM0dHK8IcoDmpoLUwWeiKFFjpxHWlS1td5-0n7kNkfqHVhSsTSW_hUMvRu3D72g3LCFb7u4v4bla_Z4XyonTVK8PpigMLJcE01g

في شريط البحث، ابدأ بكتابة "vision"، ثم اختَر Vision API عندما يظهر. قد يبدو على النحو التالي أثناء الكتابة:

B6fWWsVhymufgQx6oGIq4sgukK6JQ1VoguVOrSNf_anQb6Cv6RTLtsjx5Qdeu3-uO8-8PyqwZLYdDDjYW5o56R47cnsd_88RKTMqNkpFeDESW2hmBM_7FK2UAMz1_216yXERYSp_JA

اختَر Cloud Vision API للحصول على مربع الحوار الموضّح أدناه، ثم انقر على الزر "تفعيل":

D-MONPLi0UWH6Dp607Dod6JF-LJQZIiUQEPQNKM4Y0mSt09KfipbeeXRAE6cokArBYTfL9VQoONc4L0jlnsUYLsNytQIPfSKr9lCDrXmrrx-1w64LeWWa-byDxcyYWZdCI0mAcVzBw

التكلفة

على الرغم من إمكانية استخدام العديد من واجهات Google API بدون رسوم، فإنّ استخدام GCP (المنتجات وواجهات برمجة التطبيقات) ليس مجانيًا. عند تفعيل Vision API (كما هو موضّح أعلاه)، قد يُطلب منك تقديم حساب فوترة نشط. يجب أن يطّلع المستخدم على معلومات التسعير الخاصة بواجهة Vision API قبل تفعيلها. يُرجى العِلم أنّ بعض منتجات Google Cloud Platform (GCP) تتضمّن طبقة"دائمًا مجانية" يجب تجاوزها لتفعيل الفوترة. لأغراض هذا الدرس العملي، يتم احتساب كل طلب بيانات من Vision API ضمن هذه الطبقة المجانية، وطالما أنّك تلتزم بحدودها بشكل إجمالي (خلال كل شهر)، لن يتم تحصيل أي رسوم منك.

بعض واجهات Google API، أي يتم تغطية استخدام Google Workspace من خلال اشتراك شهري، لذلك لا تتم فوترة استخدام واجهات برمجة التطبيقات الخاصة بخدمات Gmail وGoogle Drive و"تقويم Google" و"مستندات Google" و"جداول بيانات Google" و"العروض التقديمية من Google" بشكل مباشر، على سبيل المثال. تختلف طريقة فوترة منتجات Google المختلفة، لذا احرص على الرجوع إلى مستندات واجهة برمجة التطبيقات للحصول على هذه المعلومات.

ملخّص

في هذا الدرس التطبيقي حول الترميز، عليك تفعيل Google Drive API فقط، لذا اتّبِع التعليمات أعلاه وابحث عن "Drive". يمكنك المتابعة بعد تفعيلها.

السماح بطلبات واجهة برمجة التطبيقات (إذن المستخدم)

مقدمة عن التفويض (بالإضافة إلى بعض المصادقة)

لكي يتمكّن تطبيقك من إرسال طلبات إلى واجهات برمجة التطبيقات، يجب أن يكون لديه الإذن المناسب. تصف كلمة المصادقة المشابهة بيانات اعتماد تسجيل الدخول، إذ يمكنك إثبات هويتك عند تسجيل الدخول إلى حسابك على Google باستخدام اسم مستخدم وكلمة مرور. بعد إتمام عملية المصادقة، تتمثّل الخطوة التالية في تحديد ما إذا كنت مخوَّلاً بالوصول إلى البيانات، مثل ملفات الكائنات الثنائية الكبيرة في Cloud Storage أو الملفات الشخصية للمستخدم على Google Drive، أو ما إذا كان الرمز مخوَّلاً بذلك.

تتيح Google APIs عدة أنواع من التفويض، ولكن النوع الأكثر شيوعًا لمستخدمي واجهات برمجة التطبيقات في Google Workspace هو تفويض المستخدم لأنّ التطبيق النموذجي في هذا الدرس التطبيقي حول الترميز يتيح الوصول إلى البيانات الخاصة بالمستخدمين النهائيين. يجب أن يمنح هؤلاء المستخدمون النهائيون تطبيقك الإذن بالوصول إلى بياناتهم. وهذا يعني أنّ الرمز البرمجي يجب أن يحصل على بيانات اعتماد OAuth2 الخاصة بحساب المستخدم.

للحصول على بيانات اعتماد OAuth2 لتفويض المستخدم، ارجع إلى "إدارة واجهات برمجة التطبيقات" وانقر على علامة التبويب "بيانات الاعتماد" في شريط التنقّل الأيمن:

Y33PZ_rJC1y7NH7Rrvq1kN_WxZ9CppDGJK8tTSaha298Jlm5pMqgnyweIO4oX34fcLy0_VI4gihYu5wpEM_LeJg1iDAFoidhUVyfqJX3QTzODQ_OGjHLXYBxPpUvihCJi9JGwvMREw

عند الوصول إلى هناك، ستظهر لك جميع بيانات الاعتماد في ثلاثة أقسام منفصلة:

ComE4qh76dwZbIehkDUm1QawHGia_qVe7w7rkmgbeo_wjWS--kqXCt4_zvm55iy_RXA8dKYKvBxIKazkcYQ8871SA_kNslbvum_n1Ju4k9qJJSMtDhPAnofcvIlqlKm1nu7PBQhmEg

الأول مخصّص لمفاتيح واجهة برمجة التطبيقات، والثاني لمعرّفات عملاء OAuth 2.0، والأخير لحسابات خدمة OAuth2، ونحن نستخدم الخيار الأوسط.

إنشاء بيانات اعتماد

من صفحة "بيانات الاعتماد"، انقر على الزر + إنشاء بيانات اعتماد في أعلى الصفحة، ما يفتح لك مربّع حوار يمكنك من خلاله اختيار "معرّف عميل OAuth":

C7jTddfrczo3GewPGCxbxX13GawtFc6FGvAPFusPc_IW-tr5M6xgXd1OzOHOUTo86WDa9fXiCITogv9b3wAgOcYM7xS3AmVNaPdTxbAynIe_sia2_x3LEPsBrdbX8NjeI2WaHRioOA

في الشاشة التالية، يمكنك تنفيذ إجراءَين: ضبط "شاشة طلب الموافقة" الخاصة بتفويض تطبيقك واختيار نوع التطبيق:

El9_aqPQ6Q9hOsOp3JUC5qnCm_A_BVI-oCEfPk_MsvybnWBmC5lT6CtXSoZ7EQoFzrcBEzo4zF9s8CbhXyo0e-eSY3pZ1zg0BRvT0YssMMhbzEG-gP_jiO8v9q9HYTjg-QW5jJ0RDA

إذا لم تكن قد أعددت شاشة طلب الموافقة، سيظهر لك التحذير في وحدة التحكّم وعليك إعدادها الآن. (يمكنك تخطّي الخطوات التالية إذا سبق لك إعداد شاشة طلب الموافقة).

انقر على "ضبط شاشة طلب الموافقة" حيث يمكنك اختيار تطبيق "خارجي" (أو "داخلي" إذا كنت من عملاء Google Workspace):

5w-9R6gPvUHFzODZxXy-0GEhL8ZGDGNea3QtMp1FFYDv5DJ_MIDD21NEh3CzI-GKNzy6bkhH7bohxOG8icQTegiWlavOQhQqhSy7K31Ma3YTI9aAP3P-LmTBanPslX1cnjKLVZBi8A

يُرجى العِلم أنّه لأغراض هذا التمرين، لا يهمّ أيًّا من الخيارَين ستختار لأنّك لن تنشر نموذج درس تطبيقي حول الترميز. سيختار معظم المستخدمين "خارجي" للانتقال إلى شاشة أكثر تعقيدًا، ولكن ما عليك سوى ملء حقل "اسم التطبيق" في أعلى الصفحة:

8e9z_RQz8lumYbDIcBvm57_Gpptn9uhrVQHoRzJ01AJNOFmXloDO7Eg3hhzJZZIU2F5rR0MxTCw-oXVFCq683xUwD4O33pXeuFsOMtM8EZhyjDoYc8Kv4hEoaG0Ztq9ePx6De7YmfA

كل ما تحتاج إليه في هذا الوقت هو اسم تطبيق، لذا اختَر اسمًا يعكس الدرس التطبيقي حول الترميز الذي تجريه، ثم انقر على حفظ.

إنشاء معرّف عميل OAuth (مصادقة حساب المستخدم)

الآن، ارجع إلى علامة التبويب "بيانات الاعتماد" لإنشاء معرّف عميل OAuth2. ستظهر لك هنا مجموعة متنوعة من معرّفات عملاء OAuth التي يمكنك إنشاؤها:

f8reuhsxOUNLcVrEIyRVsmP_fX_ceIlLvEKql1YHwSPW9jk9Mm9fJ0UlfUoi8eRN3QQXar4xtpo071zj6LSczNN7TYY8zB96Dn6ICZuvCAtjIgJSKdMSlX-ZhMuSWFpxxv661aUemw

نحن بصدد تطوير أداة سطر أوامر، وهي أخرى، لذا اختَر هذا الخيار ثم انقر على الزر إنشاء. اختَر اسمًا لمعرّف العميل يعكس التطبيق الذي تنشئه أو استخدِم الاسم التلقائي، وهو عادةً "عميل آخر N".

حفظ بيانات الاعتماد

  1. يظهر مربّع حوار يتضمّن بيانات الاعتماد الجديدة، انقر على حسنًا لإغلاقه

rAwekj_GNEuVwGbZOYYlGDQjlu4flE61OPEZIUmwMI5vGi3W365UwVCxi0mVNhg4WZSSczZywrZZ6NDM_U0FJ4b-TOIMEC189uybOJjgn8F_axesVMopel9RlehRBXdEFhN4d41WGQ

  1. بالعودة إلى صفحة "بيانات الاعتماد"، انتقِل للأسفل إلى قسم "معرّفات عملاء OAuth2" وابحث عن رمز التنزيل aAmje6kT_xSUM4BKIlPREpjosx7C_xxwpWqBgiGVfVWxQ8nnQOfxTPhuU0QwSnmbjykZffGrqyP1nnKrEQ7D7OqYaGw_Uzscs9gX2RwwP4AmvtHIiTFLa0gkprzJSjG9pQSx7HtmSQ وانقر عليه في أسفل يسار معرّف العميل الذي أنشأته حديثًا. x-vb-sKZy-X8a1X4uTsBWotSd4wn0PGt4mHMNv6DUrq5J5ihpujUyTiIVr5SHw0p2ZDy0KTP-zqOaFX-Az9BYDWG90KNFmsRLTUOo1mUVk7dYRJiK3VwYJNU0bbxjsbbpqcTr5_oLw
  2. سيؤدي ذلك إلى فتح مربّع حوار لحفظ ملف باسم client_secret-LONG-HASH-STRING.apps.googleusercontent.com.json، من المحتمل أن يكون ذلك في مجلد عمليات التنزيل. ننصحك باختيار اسم أسهل، مثل client_secret.json (وهو الاسم الذي يستخدمه نموذج التطبيق)، ثم حفظه في الدليل أو المجلد الذي ستنشئ فيه نموذج التطبيق في هذا الدرس التطبيقي حول الترميز.