يشرح هذا الدليل كيفية استخدام OAuth 2.0 مع بيانات اعتماد Google للمستخدمين للوصول إلى Chat API. إنّ المصادقة والتفويض باستخدام بيانات اعتماد المستخدم تسمح لتطبيقات Chat بالوصول إلى بيانات المستخدم وتنفيذ العمليات نيابةً عن المستخدم الذي تمت المصادقة عليه. من خلال المصادقة نيابةً عن المستخدم، يمتلك التطبيق الأذونات نفسها التي يمتلكها هذا المستخدم ويمكنه تنفيذ إجراءات كما لو كان ذلك المستخدم قد نفّذها.
بعد مصادقة طلب بيانات من واجهة برمجة التطبيقات وتفويضه باستخدام بيانات اعتماد المستخدم، يمكن لتطبيقات Chat إجراء ما يلي:
- إنشاء مساحات Chat
- إضافة مستخدمين إلى مساحات Chat والمحادثات الجماعية
- يمكنك استخدام بيانات المستخدمين في واجهات برمجة تطبيقات Workspace الأخرى، مثل ما يلي:
- أنشئ أحداثًا في "تقويم Google".
- عناصر السجلّ في "جداول بيانات Google"
- إرسال رسالة إلكترونية باستخدام Gmail.
عندما ينفِّذ تطبيق إجراءً من خلال مصادقة المستخدم (مثل إنشاء مساحة)، يعرض Google Chat رسالة إحالة تخبر المستخدمين باسم التطبيق الذي نفَّذ الإجراء للمستخدم الذي فوَّضه.
لمعرفة المزيد من المعلومات عن الحالات التي تتطلّب فيها تطبيقات Chat المصادقة ونوع المصادقة التي يجب استخدامها، يمكنك الاطّلاع على أنواع المصادقة المطلوبة في النظرة العامة حول المصادقة والتفويض في Chat API.
المصادقة والتفويض باستخدام التفويض على مستوى النطاق
إذا كنت مشرف نطاق، يمكنك منح تفويض مرجع على مستوى النطاق لتفويض حساب خدمة أحد التطبيقات للوصول إلى بيانات المستخدمين بدون طلب الموافقة من كل مستخدم. بعد ضبط التفويض على مستوى النطاق، يمكن لحساب الخدمة انتحال هوية حساب مستخدم. على الرغم من استخدام حساب الخدمة للمصادقة، فإنّ التفويض على مستوى النطاق ينتحل هوية مستخدم، وبالتالي يُعدّ مصادقة المستخدم. يمكنك استخدام التفويض على مستوى النطاق في حال أي وظيفة تتطلب مصادقة المستخدم
المصادقة والتفويض باستخدام امتيازات المشرف
إذا كنت مشرفًا لنطاق أو مشرفًا مفوَّضًا لديه امتيازات المشرف، يمكنك مصادقة الطلبات وتفويضها إلى Google Chat API من خلال امتيازات المشرف من خلال ضبط الحقل use_admin_access
في طلبات الطرق السارية. للمزيد من المعلومات، يُرجى الاطّلاع على المستندات المرجعية لواجهة برمجة التطبيقات.
تجدر الإشارة إلى أنّه عند تنفيذ تطبيق Google Chat لإجراء باستخدام امتيازات المشرف، لن يُطلع تطبيق Chat المستخدمين على اسم تطبيق Chat الذي نفَّذ الإجراء أو اسم المشرف الذي فوَّضه، ولكنه يخبر المستخدمين فقط بأنّ مشرف المؤسسة مَن نفّذ هذا الإجراء.
المتطلّبات الأساسية
لتشغيل المثال في هذا الدليل، تحتاج إلى المتطلبات الأساسية التالية:
- حساب على Google Workspace يمكنه الوصول إلى Google Chat.
- مشروع على Google Cloud مع تفعيل وإعداد Chat API لإنشاء مشروع وتفعيل واجهة برمجة التطبيقات، يُرجى الاطّلاع على مقالة إنشاء مشروع وتفعيل واجهة برمجة التطبيقات.
- تطبيق Chat تم ضبطه على صفحة إعداد Chat API في وحدة تحكّم Google Cloud لإنشاء تطبيق Chat وضبطه، يُرجى الاطّلاع على إنشاء تطبيق Google Chat باستخدام دوال Cloud.
بالإضافة إلى ذلك، تحتاج إلى المتطلبات الأساسية التالية الخاصة بكل لغة:
Java
- JDK 1.7 أو أكبر
- تتيح لك أداة Maven إدارة الحزم
مشروع Maven تم إعداده. لتهيئة مشروع جديد، قم بتشغيل الأمر التالي في واجهة سطر الأوامر:
mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Python
- Python 3.6 أو أعلى
- تتيح لك أداة pip إدارة الحزم
Node.js
Apps Script
- مشروع "برمجة تطبيقات Google" مرتبط بمشروعك على Google Cloud لإعداد مشروع "برمجة تطبيقات Google"، يُرجى الاطّلاع على البدء السريع لتطبيق Chat "برمجة تطبيقات Google".
الخطوة 1: ضبط شاشة موافقة OAuth وتحديد النطاقات وتسجيل تطبيقك
عند استخدام OAuth 2.0 للحصول على التفويض، تعرض Google شاشة موافقة للمستخدم، بما في ذلك ملخّص عن مشروعك وسياساته ونطاقات التفويض المطلوبة. يؤدي ضبط شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth في تطبيقك إلى تحديد ما تعرضه Google للمستخدمين ومراجعي التطبيق وتسجيل تطبيقك حتى تتمكّن من نشره لاحقًا.
تتطلب جميع التطبيقات التي تستخدم OAuth 2.0 ضبط شاشة طلب الموافقة، ولكن عليك فقط إدراج نطاقات التطبيقات التي يستخدمها المستخدمون من خارج مؤسستك التي تستخدم Google Workspace.
في Google Cloud Console، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > شاشة موافقة OAuth.
اختَر نوع المستخدم لتطبيقك، ثم انقر على إنشاء.
أكمِل نموذج تسجيل التطبيق، ثم انقر على حفظ ومتابعة.
انقر على إضافة نطاقات أو إزالتها. أضِف نطاقات التفويض التي يطلبها تطبيقك وتحقَّق منها، وانقر على تعديل، ثم انقر على حفظ ومتابعة.
مراجعة ملخّص تسجيل التطبيق انقر على تعديل لإجراء تغييرات أو انقر على الرجوع إلى لوحة البيانات.
الخطوة 2: إنشاء بيانات اعتماد معرِّف عميل OAuth في Google Cloud Console
للمصادقة كمستخدم نهائي والوصول إلى بيانات المستخدمين في تطبيقك، عليك إنشاء واحد أو أكثر من معرّفات عميل OAuth 2.0. يُستخدم معرّف العميل لتحديد تطبيق واحد لخوادم OAuth في Google. إذا كان تطبيقك يعمل على أنظمة أساسية متعددة، مثل Android وiOS والويب، ستحتاج إلى إنشاء معرّف عميل منفصل لكل نظام أساسي.
إنشاء بيانات اعتماد معرِّف عميل OAuth
اختَر نوع التطبيق للحصول على تعليمات محدَّدة حول كيفية إنشاء معرِّف عميل OAuth:
تطبيق ويب
- في وحدة تحكُّم Google Cloud، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.
- انقر على إنشاء بيانات اعتماد > معرِّف عميل OAuth.
- انقر على نوع التطبيق > تطبيق الويب.
- في حقل الاسم، اكتب اسمًا لبيانات الاعتماد. ولا يظهر هذا الاسم إلا في وحدة تحكُّم Google Cloud.
- أضِف معرّفات موارد منتظمة (URI) معتمَدة ذات صلة بتطبيقك:
- التطبيقات من جهة العميل (JavaScript): ضمن مصادر JavaScript المعتمَدة، انقر على إضافة معرّف موارد منتظم (URI). بعد ذلك، أدخِل عنوان URL لاستخدامه في طلبات المتصفّح. يحدِّد ذلك النطاقات التي يمكن لتطبيقك من خلالها إرسال طلبات واجهة برمجة التطبيقات إلى خادم OAuth 2.0.
- التطبيقات من جهة الخادم (Java وPython وغيرهما): ضمن معرّفات الموارد المنتظمة (URI) المعتمَدة لإعادة التوجيه، انقر على إضافة معرّف موارد منتظم (URI). بعد ذلك، أدخِل معرِّف الموارد المنتظم (URI) لنقطة النهاية الذي يمكن لخادم OAuth 2.0 إرسال الاستجابات إليه.
- انقر على إنشاء. تظهر الشاشة التي تم إنشاؤها من خلال عميل OAuth، وتعرض معرِّف العميل الجديد وسر العميل.
سجِّل معرِّف العميل. لا يتم استخدام أسرار العميل مع تطبيقات الويب.
- انقر على موافق. تظهر بيانات الاعتماد التي تم إنشاؤها حديثًا ضمن معرّفات عميل OAuth 2.0.
Android
- في وحدة تحكُّم Google Cloud، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.
- انقر على إنشاء بيانات اعتماد > معرِّف عميل OAuth.
- انقر على نوع التطبيق > Android.
- في حقل "الاسم"، اكتب اسمًا لبيانات الاعتماد. ولا يظهر هذا الاسم إلا في وحدة تحكُّم Google Cloud.
- في حقل "اسم الحزمة"، أدخِل اسم الحزمة من ملف
AndroidManifest.xml
. - في الحقل "الملف المرجعي لشهادة SHA-1"، أدخِل الملف المرجعي لشهادة SHA-1 التي تم إنشاؤها.
- انقر على إنشاء. تظهر الشاشة التي تم إنشاؤها من خلال عميل OAuth، وتعرض معرِّف العميل الجديد الخاص بك.
- انقر على موافق. تظهر بيانات الاعتماد التي تم إنشاؤها حديثًا ضمن "معرّفات عميل OAuth 2.0".
iOS
- في وحدة تحكُّم Google Cloud، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.
- انقر على إنشاء بيانات اعتماد > معرِّف عميل OAuth.
- انقر على نوع التطبيق > iOS.
- في حقل "الاسم"، اكتب اسمًا لبيانات الاعتماد. ولا يظهر هذا الاسم إلا في وحدة تحكُّم Google Cloud.
- في حقل "معرّف الحزمة"، أدخِل معرّف الحزمة كما هو موضّح في ملف
Info.plist
للتطبيق. - اختياري: إذا كان تطبيقك يظهر في Apple App Store، أدخِل رقم تعريف متجر التطبيقات.
- اختياري: في حقل "رقم تعريف الفريق"، أدخِل السلسلة الفريدة المكوّنة من 10 أحرف والتي أنشأتها Apple وتم تخصيصها لفريقك.
- انقر على إنشاء. تظهر الشاشة التي تم إنشاؤها من خلال عميل OAuth، وتعرض معرِّف العميل الجديد وسر العميل.
- انقر على موافق. تظهر بيانات الاعتماد التي تم إنشاؤها حديثًا ضمن "معرّفات عميل OAuth 2.0".
تطبيق Chrome
- في وحدة تحكُّم Google Cloud، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.
- انقر على إنشاء بيانات اعتماد > معرِّف عميل OAuth.
- انقر على نوع التطبيق > تطبيق Chrome.
- في حقل "الاسم"، اكتب اسمًا لبيانات الاعتماد. ولا يظهر هذا الاسم إلا في وحدة تحكُّم Google Cloud.
- في الحقل "معرّف التطبيق"، أدخِل سلسلة رقم التعريف الفريدة لتطبيقك والمكوَّنة من 32 حرفًا. يمكنك العثور على قيمة رقم التعريف في عنوان URL لتطبيقك على "سوق Chrome الإلكتروني" وفي لوحة بيانات المطوّر في "سوق Chrome الإلكتروني".
- انقر على إنشاء. تظهر الشاشة التي تم إنشاؤها من خلال عميل OAuth، وتعرض معرِّف العميل الجديد وسر العميل.
- انقر على موافق. تظهر بيانات الاعتماد التي تم إنشاؤها حديثًا ضمن "معرّفات عميل OAuth 2.0".
تطبيق لأجهزة الكمبيوتر المكتبي
- في وحدة تحكُّم Google Cloud، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.
- انقر على إنشاء بيانات اعتماد > معرِّف عميل OAuth.
- انقر على نوع التطبيق > تطبيق الكمبيوتر المكتبي.
- في حقل الاسم، اكتب اسمًا لبيانات الاعتماد. ولا يظهر هذا الاسم إلا في وحدة تحكُّم Google Cloud.
- انقر على إنشاء. تظهر الشاشة التي تم إنشاؤها من خلال عميل OAuth، وتعرض معرِّف العميل الجديد وسر العميل.
- انقر على موافق. تظهر بيانات الاعتماد التي تم إنشاؤها حديثًا ضمن معرّفات عميل OAuth 2.0.
أجهزة التلفزيون والأجهزة ذات الإدخال المحدود
- في وحدة تحكُّم Google Cloud، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.
- انقر على إنشاء بيانات اعتماد > معرِّف عميل OAuth.
- انقر على نوع التطبيق > أجهزة التلفزيون وأجهزة الإدخال المحدودة.
- في حقل "الاسم"، اكتب اسمًا لبيانات الاعتماد. ولا يظهر هذا الاسم إلا في وحدة تحكُّم Google Cloud.
- انقر على إنشاء. تظهر الشاشة التي تم إنشاؤها من خلال عميل OAuth، وتعرض معرِّف العميل الجديد وسر العميل.
- انقر على موافق. تظهر بيانات الاعتماد التي تم إنشاؤها حديثًا ضمن "معرّفات عميل OAuth 2.0".
Universal Windows Platform (منصة Windows العالمية)
- في وحدة تحكُّم Google Cloud، انتقِل إلى القائمة > واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.
- انقر على إنشاء بيانات اعتماد > معرِّف عميل OAuth.
- انقر على نوع التطبيق > نظام التشغيل Windows الأساسي (UWP).
- في حقل "الاسم"، اكتب اسمًا لبيانات الاعتماد. ولا يظهر هذا الاسم إلا في وحدة تحكُّم Google Cloud.
- في حقل "رقم تعريف المتجر"، أدخِل قيمة رقم تعريف Microsoft Store الفريد والمؤلّف من 12 حرفًا والمؤلف من 12 حرفًا. يمكنك العثور على رقم التعريف هذا في عنوان URL لتطبيقك على Microsoft Store وفي مركز الشركاء.
- انقر على إنشاء. تظهر الشاشة التي تم إنشاؤها من خلال عميل OAuth، وتعرض معرِّف العميل الجديد وسر العميل.
- انقر على موافق. تظهر بيانات الاعتماد التي تم إنشاؤها حديثًا ضمن "معرّفات عميل OAuth 2.0".
تنزيل ملف JSON لسر العميل
ملف سر العميل هو تمثيل JSON لبيانات اعتماد معرِّف عميل OAuth التي يمكن لتطبيق Chat الرجوع إليها عند تقديم بيانات الاعتماد.
في Google Cloud Console، انتقِل إلى رمز القائمة > واجهات برمجة التطبيقات والخدمات > بيانات الاعتماد.
ضمن معرّفات عميل OAuth 2.0، انقر على معرِّف العميل الذي أنشأته.
انقر على تنزيل JSON.
احفظ الملف باسم
client_secrets.json
.
الخطوة 3: تثبيت مكتبة برامج Google والتبعيات الأخرى
تثبيت مكتبة عملاء Google والتبعيات الأخرى المطلوبة للمشروع.
Java
لإضافة مكتبات عملاء Google وغيرها من التبعيات المطلوبة إلى مشروع Maven، عدِّل الملف pom.xml
في دليل مشروعك وأضِف الاعتماديات التالية:
<dependencies>
<!-- ... existing dependencies ... -->
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-chat</artifactId>
<version>v1-rev20230905-2.0.0</version>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-oauth2-http</artifactId>
<version>1.19.0</version>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.34.1</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
</dependencies>
Python
إذا لم يسبق لك تثبيت مكتبات عملاء Google للغة Python، شغِّل الأمر التالي في واجهة سطر الأوامر:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
Node.js
لإضافة مكتبات عملاء Google وغيرها من التبعيات المطلوبة إلى مشروع Node.js، يمكنك التبديل إلى دليل مشروعك وتنفيذ الأمر التالي في واجهة سطر الأوامر:
npm install "@googleapis/chat" open server-destroy
Apps Script
يستخدم هذا النموذج خدمة Chat المتقدمة لطلب Google Chat API. لتفعيل الخدمة في "مشروع برمجة التطبيقات"
- على يمين الصفحة، انقر على رمز المحرِّر .
- على يمين الصفحة، بجانب الخدمات، انقر على إضافة خدمة .
- اختَر Google Chat API.
- في الإصدار، اختَر الإصدار 1.
- انقر على إضافة.
يمكنك استخدام أي لغة متاحة في مكتبات العملاء.
الخطوة 4: كتابة نص برمجي يستدعي Chat API
يمكن طلب البيانات من واجهة برمجة التطبيقات باستخدام تفويض OAuth عملية متعدّدة الخطوات. في تطبيقات الويب أو سطح المكتب، تكون العملية عادةً على النحو التالي:
- يوجِّه التطبيق المستخدم إلى صفحة تفويض تطلب الوصول إلى بيانات المستخدمين المحددة من خلال نطاقات التفويض. يُعرِّف التطبيق نفسه باستخدام بيانات اعتماد معرِّف العميل.
- يراجع المستخدم الأذونات التي يطلبها التطبيق ويوافق على الطلب.
- يُعيد خادم مصادقة Google توجيه المتصفح إلى نقطة نهاية HTTP الخاصة بالتطبيق باستخدام رمز التفويض.
- يرسل التطبيق طلبًا آخر إلى خادم تفويض Google لتبادل رمز التفويض لرمز دخول.
- يستخدم التطبيق رمز الدخول لطلب بيانات من واجهة برمجة التطبيقات نيابةً عن المستخدم.
لمزيد من المعلومات حول عملية تفويض OAuth، يمكنك الاطّلاع على استخدام OAuth 2.0 للوصول إلى دليل Google APIs.
تستخدم نماذج الرموز التالية في Java وPython وNode.js مكتبة برامج لتنفيذ مسار تفويض OAuth. فهي تفتح خادم HTTP محليًا لتلقي رمز التفويض مرة أخرى من خادم التفويض، والذي يتبادله بعد ذلك للحصول على رمز الدخول. في عينة رمز "برمجة تطبيقات Google"، تتم معالجة تدفق التفويض هذا عن طريق "برمجة تطبيقات Google".
بعد إكمال عملية المصادقة، تتم المصادقة على النص البرمجي من خلال Chat API باستخدام رمز الدخول الخاص بالمستخدم، ثم إنشاء مساحة.
Java
- في دليل مشروعك، افتح الملف
src/main/java/com/google/chat/app/authsample/App.java
. استبدِل المحتوى في
App.java
بالرمز التالي:package com.google.chat.app.authsample; import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.gson.GsonFactory; import com.google.api.client.util.store.FileDataStoreFactory; import com.google.api.services.chat.v1.HangoutsChat; import com.google.api.services.chat.v1.model.Space; import java.io.InputStreamReader; import java.util.Collection; import java.util.Collections; /** * Authenticates with Chat API via user credentials, then creates a Chat space. */ public class App { // Application OAuth credentials. private static final String KEYS_RESOURCE_URI = "/client_secrets.json"; // Define your app's authorization scopes. private static final Collection<String> SCOPES = Collections.singleton("https://www.googleapis.com/auth/chat.spaces.create"); // Directory to store user credentials. private static final java.io.File DATA_STORE_DIR = new java.io.File(System.getProperty("user.home"), ".store/auth-sample-app"); // Global instance of the JSON factory. private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); // Global instance of the HTTP transport. private static HttpTransport httpTransport; // Global instance of the DataStoreFactory. The best practice is to make it a single // globally shared instance across your application. private static FileDataStoreFactory dataStoreFactory; public static void main( String[] args ) { try { // Run app. httpTransport = GoogleNetHttpTransport.newTrustedTransport(); dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR); Credential userCredential = authorize(); Space response = App.createChatSpace(userCredential); // Print details about the created space. System.out.println(response); } catch (Exception e) { e.printStackTrace(); } } /** * Authorizes the installed application to access user's protected data. */ private static Credential authorize() throws Exception { // Load client secrets. GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(App.class.getResourceAsStream("/client_secrets.json"))); // Set up authorization code flow. GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( httpTransport, JSON_FACTORY, clientSecrets, SCOPES) .setDataStoreFactory(dataStoreFactory) .build(); // Authorize. return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user"); } /** * Creates a Chat space. */ private static Space createChatSpace(Credential userCredential) throws Exception { // Build the Chat API client and authenticate with the user account. HangoutsChat chatService = new HangoutsChat.Builder( httpTransport, JSON_FACTORY, userCredential) .setApplicationName("auth-sample-app") .build(); // Create a Chat space. Space space = new Space() // To create a named space, set spaceType to SPACE. .setSpaceType("SPACE") // The user-visible name of the space. .setDisplayName("API-made"); return chatService.spaces().create(space).execute(); } }
أنشِئ دليلاً فرعيًا جديدًا باسم "
resources
" ضِمن دليل مشروعك.انسخ الملف
client_secrets.json
إلى الدليل الفرعيresources
.لإعداد Maven لتضمين ملف أسرار العميل في حزمة المشروع، عدِّل الملف
pom.xml
في دليل مشروعك وأضِف عملية الإعداد التالية إلى القسم<build>
:<build> <!-- ... existing configurations ... --> <resources> <resource> <directory>resources</directory> </resource> </resources> </build>
لإعداد Maven لتضمين الاعتماديات في حزمة المشروع وتنفيذ الفئة الرئيسية لتطبيقك، عدِّل الملف
pom.xml
في دليل المشروع وأضِف الإعدادات التالية إلى القسم<plugins>
:<plugins> <!-- ... existing configurations ... --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.google.chat.app.authsample.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins>
Python
احفظ الرمز التالي في ملف باسم
chat_space_create_named.py
في الدليل نفسه الذي يحتوي علىclient_secrets.json
:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"] def main(): ''' Authenticates with Chat API via user credentials, then creates a Chat space. ''' flow = InstalledAppFlow.from_client_secrets_file( 'client_secrets.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. service = build('chat', 'v1', credentials=creds) # Use the service endpoint to call Chat API. result = service.spaces().create( # Details about the space to create. body = { # To create a named space, set spaceType to SPACE. 'spaceType': 'SPACE', # The user-visible name of the space. 'displayName': 'API-made' } ).execute() # Prints details about the created space. print(result) if __name__ == '__main__': main()
Node.js
احفظ الرمز التالي في ملف باسم
chat_space_create_named.js
في الدليل نفسه الذي يتضمن مشروع Node.js وclient_secrets.json
:const fs = require('fs'); const path = require('path'); const http = require('http'); const url = require('url'); const destroyer = require('server-destroy'); const chat = require('@googleapis/chat'); // Application OAuth credentials. const keys = require('./client_secrets.json').installed; // Define your app's authorization scopes. // When modifying these scopes, delete the file token.json, if it exists. const scopes = ["https://www.googleapis.com/auth/chat.spaces.create"]; // Create a new OAuth2 client with the configured keys. const oauth2Client = new chat.auth.OAuth2( keys.client_id, keys.client_secret, 'http://localhost:3000' ); /** * Opens an HTTP server to accept the OAuth callback. * In this simple example, the only request to our webserver is to /?code=<code>. */ async function authenticate(scopes) { const opn = (await import('open')).default; return new Promise((resolve, reject) => { // Generate the URL for authorization. const authorizeUrl = oauth2Client.generateAuthUrl({ access_type: 'offline', scope: scopes.join(' '), }); // Start the HTTP server to listen for the callback. const server = http .createServer(async (req, res) => { try { const qs = new url.URL(req.url, 'http://localhost:3000').searchParams; res.end('Authentication successful! Please return to the console.'); server.destroy(); const { tokens } = await oauth2Client.getToken(qs.get('code')); oauth2Client.credentials = tokens; resolve(oauth2Client); } catch (e) { reject(e); } }) .listen(3000, () => { // Open the browser to the authorize URL to start the workflow. opn(authorizeUrl, { wait: false }).then(cp => cp.unref()); }); destroyer(server); }); } /** * Authenticates with Chat API via user credentials, then creates a Chat space. */ async function createSpace() { // Create the Chat API client and authenticate with the authorized user. const chatClient = await chat.chat({ version: 'v1', auth: oauth2Client }); // Call the Chat API to create a space. const result = await chatClient.spaces.create({ // Details about the space to create. requestBody: { // To create a named space, set spaceType to SPACE. 'spaceType': 'SPACE', // The user-visible name of the space. 'displayName': 'API-made' } }); return result; } // Authenticate the user, execute the function, // then print details about the created space. authenticate(scopes) .then(createSpace) .then(console.log);
Apps Script
في محرِّر "برمجة تطبيقات Google"، عدِّل الملف
appsscript.json
وأضِف نطاق OAuth اللازم لطلب واجهة برمجة التطبيقات:"oauthScopes": [ "https://www.googleapis.com/auth/chat.spaces.create" ]
احفظ الرمز التالي في ملف باسم
ChatSpaceCreateNamed.gs
في مشروع "برمجة تطبيقات Google":/** * Authenticates with Chat API via user credentials, then creates a * Chat space. */ function createSpace() { try { // Details about the space to create. // To create a named space, set spaceType to SPACE. // The user-visible name of the space is displayName. const space = {'displayName': 'API-made', 'spaceType': 'SPACE'}; // Call Chat API with user credentials to create the space. const result = Chat.Spaces.create(space); // Log details about the created space. console.log(result); } catch (err) { // TODO (developer) - Handle exception console.log('Failed to create space with error %s', err.message); } }
الخطوة 5: تشغيل نموذج النص البرمجي
لتشغيل المثال، من سطر الأوامر، انتقِل إلى الدليل الذي يحتوي على ملفات مشروعك، ثم نفِّذ الأمر التالي:
Java
mvn compile assembly:single
java -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar
Python
python3 chat_space_create_named.py
Node.js
node chat_space_create_named.js
Apps Script
افتح الملف ChatSpaceCreateNamed.gs
في محرِّر "برمجة تطبيقات Google"
وانقر على تشغيل.
سيفتح متصفّح ويطلب منك تسجيل الدخول إلى حسابك على Google:
بعد تسجيل الدخول، ستظهر شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth وتطلب منك منح الإذن للتطبيق.
بعد منح الإذن، يستدعي النص البرمجي
واجهة برمجة تطبيقات Chat، التي ترد من خلال إنشاء
مساحة Chat بالاسم المعروض API-made
. تطبع وحدة التحكم
تفاصيل استدعاء واجهة برمجة التطبيقات. للعثور على المساحة، انتقِل إلى لوحة المساحات في Google Chat.
تحديد المشاكل في المثال وحلّها
عند تشغيل chat_space_create_named.py
، قد تظهر لك رسالة الخطأ التالية:
Expected a JSON object with a single property for a "web" or "installed" application
تعني رسالة الخطأ هذه أنّ ملف client_secrets.json
الذي نزّلته
من وحدة التحكّم في Google Cloud لا يبدأ بالسمة "web"
أو
"installed"
. بعد المصادقة باستخدام الملف الذي تم تنزيله، إذا لم يحفظ الرمز رمز الدخول
في ملف جديد مثل token.json
، ستتم كتابة رمز الدخول
على client_secrets.json
، ما قد يؤدي إلى حدوث هذا الخطأ أثناء
محاولات التفويض اللاحقة.
لإصلاح الخطأ، نزِّل ملف سر العميل من وحدة تحكم Google Cloud مرة أخرى، واحفظ الملف الجديد في مكان الملف الحالي.
مواضيع ذات صلة
إذا احتاج تطبيقك إلى الاستمرار في استخدام الرموز المميزة للمستخدم خارج نطاق تدفق واحد، فيمكنه تخزين الرموز المميزة لإعادة استخدامها لاحقًا. في هذه الحالة، يحتاج تطبيقك إلى التعامل مع الرموز المميزة للمستخدم بأمان والتعامل مع إبطال الرمز المميّز وانتهاء صلاحيته. لمزيد من المعلومات، يُرجى الاطّلاع على دليل استخدام أفضل ممارسات OAuth 2.0.
تعرَّف على الإجراءات الأخرى التي يمكن لواجهة Chat API تنفيذها من خلال مراجعة المستندات المرجعية الخاصة بواجهة برمجة تطبيقات Chat.