توضّح الخطوات السريعة كيفية إعداد تطبيق يستدعي واجهة برمجة التطبيقات Google Workspace API وتشغيله.
تستخدِم عمليات الإعداد السريع في Google Workspace مكتبات عملاء واجهة برمجة التطبيقات لمعالجة بعض تفاصيل عملية المصادقة والتفويض. ننصحك باستخدام مكتبات العملاء لتطبيقاتك. يستخدم دليل البدء السريع هذا أسلوب مصادقة بسيطًا ومناسبًا لبيئة الاختبار. بالنسبة إلى بيئة الإنتاج، ننصحك بالاطّلاع على معلومات عن المصادقة والتفويض قبل اختيار بيانات اعتماد الوصول الملائمة لتطبيقك.
أنشئ تطبيق سطر أوامر Java يُرسل طلبات إلى Google Keep API.
الأهداف
- اضبط إعدادات البيئة.
- إعداد العيّنة
- شغِّل العيّنة.
المتطلبات الأساسية
- Java 1.8 أو إصدار أحدث
- الإصدار 7.0 من Gradle أو إصدار أحدث
- مشروع على Google Cloud
- حساب Google تم تفعيل تطبيق Google Keep فيه
إعداد البيئة
لإكمال عملية الإعداد السريعة هذه، عليك إعداد بيئتك.
تفعيل واجهة برمجة التطبيقات
قبل استخدام واجهات برمجة تطبيقات Google، عليك تفعيلها في مشروع على Google Cloud. يمكنك تفعيل واجهة برمجة تطبيقات واحدة أو أكثر في مشروع واحد على Google Cloud.في Google Cloud Console، فعِّل Google Keep API.
إنشاء حساب خدمة
حساب الخدمة هو نوع خاص من الحسابات يستخدمه التطبيق بدلاً من شخص. يمكنك استخدام حساب خدمة للوصول إلى البيانات أو تنفيذ إجراءات من خلال حساب الروبوت، أو للوصول إلى البيانات نيابةً عن مستخدمي Google Workspace أو Cloud Identity. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة التعرّف على حسابات الخدمة.Google Cloud Console
- في Google Cloud Console، انتقِل إلى رمز القائمة > إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة.
- انقر على إنشاء حساب خدمة.
- املأ تفاصيل حساب الخدمة، ثم انقر على إنشاء ومتابعة.
- اختياري: يمكنك إسناد أدوار إلى حساب الخدمة لمنح إذن الوصول إلى موارد مشروعك على Google Cloud. لمزيد من التفاصيل، يُرجى الاطّلاع على منح إذن الوصول إلى الموارد وتغييره وإبطاله.
- انقر على متابعة.
- اختياري: أدخِل المستخدمين أو المجموعات التي يمكنها إدارة الإجراءات وتنفيذها باستخدام حساب الخدمة هذا. لمزيد من التفاصيل، يُرجى الاطّلاع على مقالة إدارة انتحال هوية حساب الخدمة.
- انقر على تم. دوِّن عنوان البريد الإلكتروني لحساب الخدمة.
gcloud CLI
- أنشئ حساب الخدمة باتّباع الخطوات التالية:
gcloud iam service-accounts create
SERVICE_ACCOUNT_NAME
\ --display-name="SERVICE_ACCOUNT_NAME
" - اختياري: يمكنك إسناد أدوار إلى حساب الخدمة لمنح إذن الوصول إلى موارد مشروعك على Google Cloud. لمزيد من التفاصيل، يُرجى الاطّلاع على منح إذن الوصول إلى الموارد وتغييره وإبطاله.
إنشاء بيانات اعتماد لحساب خدمة
يجب الحصول على بيانات الاعتماد في شكل مفتاحَين عام/خاص. ويستخدم الرمز البرمجي هذه المعلومات لمنح الإذن بتنفيذ إجراءات حساب الخدمة في تطبيقك.- في Google Cloud Console، انتقِل إلى رمز القائمة > إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة.
- اختَر حساب الخدمة.
- انقر على المفاتيح > إضافة مفتاح > إنشاء مفتاح جديد.
- اختَر JSON، ثمّ انقر على إنشاء.
يتم إنشاء زوج مفتاح عام/خاص جديد وتنزيله على جهازك كملف جديد. احفظ ملف JSON الذي تم تنزيله باسم
credentials.json
في دليل العمل. هذا الملف هو النسخة الوحيدة من هذا المفتاح. للحصول على معلومات عن كيفية تخزين مفتاحك بأمان، راجِع إدارة مفاتيح حساب الخدمة. - انقر على إغلاق (Close).
إعداد تفويض على مستوى النطاق لحساب خدمة
لاستدعاء واجهات برمجة التطبيقات نيابةً عن المستخدمين في مؤسسة Google Workspace، يجب منح حساب الخدمة تفويضًا على مستوى النطاق من خلال حساب مشرف متميّز في وحدة تحكّم مشرف Google Workspace. لمزيد من المعلومات، يُرجى الاطّلاع على تفويض الإذن على مستوى النطاق لحساب خدمة.- في Google Cloud Console، انتقِل إلى رمز القائمة > إدارة الهوية وإمكانية الوصول والمشرف > حسابات الخدمة.
- اختَر حساب الخدمة.
- انقر على إظهار الإعدادات المتقدمة.
- ضمن "التفويض على مستوى النطاق"، ابحث عن "معرِّف العميل" لحساب الخدمة. انقر على رمز النسخ لنسخ قيمة معرّف العميل إلى الحافظة.
إذا كان لديك إذن وصول مشرف متميز إلى حساب Google Workspace ذي الصلة، انقر على عرض وحدة تحكّم المشرف في Google Workspace، ثم سجِّل الدخول باستخدام حساب مستخدِم مشرف متميز واستمِر في اتّباع هذه الخطوات.
إذا لم يكن لديك إذن وصول المشرف المتميّز إلى حساب Google Workspace ذي الصلة، تواصَل مع مشرف متميز لهذا الحساب وأرسِل إليه رقم تعريف العميل لحساب الخدمة وقائمة نطاقات OAuth حتى يتمكّن من إكمال الخطوات التالية في "وحدة تحكّم المشرف".
- في "وحدة تحكّم المشرف في Google"، انتقِل إلى رمز القائمة > الأمان > التحكّم في البيانات والوصول > عناصر التحكّم في واجهة برمجة التطبيقات.
- انقر على إدارة التفويض على مستوى النطاق.
- انقر على إضافة نطاق جديد.
- في حقل "معرِّف العميل"، الصِق معرِّف العميل الذي نسخته سابقًا.
- في حقل "نطاقات OAuth"، أدخِل قائمة مفصولة بفواصل بالنطاقات المطلوبة لتطبيقك. هذه هي المجموعة نفسها من النطاقات التي حدّدتها عند ضبط شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth.
- انقر على تفويض.
إعداد مساحة العمل
في دليل العمل، أنشئ بنية مشروع جديدة:
gradle init --type basic mkdir -p src/main/java src/main/resources
في الدليل
src/main/resources/
، انسخ ملفcredentials.json
الذي نزّلته سابقًا.افتح ملف
build.gradle
التلقائي واستبدِل محتوياته بالرمز التالي:apply plugin: 'java' apply plugin: 'application' mainClassName = 'KeepQuickstart' sourceCompatibility = 1.8 targetCompatibility = 1.8 version = '1.0' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { implementation 'com.google.api-client:google-api-client:1.23.0' implementation 'com.google.oauth-client:google-oauth-client-jetty:1.23.0' implementation 'com.google.apis:google-api-services-keep:v1-rev20210528-1.31.0' }
إعداد العيّنة
في الدليل
src/main/java/
، أنشِئ ملف Java جديدًا باسم يتطابق مع قيمةmainClassName
في ملفbuild.gradle
.أدرِج الرمز التالي في ملف Java الجديد:
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.javanet.NetHttpTransport; 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.keep.v1.Keep; import com.google.api.services.keep.v1.model.Note; import com.google.api.services.keep.v1.model.Section; import com.google.api.services.keep.v1.model.TextContent; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.security.GeneralSecurityException; import java.util.Collections; import java.util.List; public class KeepQuickstart { private static final String APPLICATION_NAME = "Google Keep API Java Quickstart"; private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); /** * Global instance of the scopes required by this quickstart. If modifying these scopes, delete * your previously saved tokens/ folder. */ private static final List<String> KEEP_SCOPES = Collections.singletonList("https://www.googleapis.com/auth/keep"); private static final String CREDENTIALS_FILE_PATH = "/credentials.json"; /** * Creates an authorized Credential object. * * @param HTTP_TRANSPORT The network HTTP Transport. * @return An authorized Credential object. * @throws IOException */ private static Credential getOAuthCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException { // Load client secrets. InputStream in = KeepQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH); if (in == null) { throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH); } GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); // Build flow and trigger user authorization request. GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, KEEP_SCOPES) .setDataStoreFactory(new FileDataStoreFactory(new java.io.File("tokens"))) .setAccessType("offline") .build(); LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build(); return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user"); } public static void main(String... args) throws IOException, GeneralSecurityException { // Build a new authorized API client service. final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); Keep service = new Keep.Builder(HTTP_TRANSPORT, JSON_FACTORY, getOAuthCredentials(HTTP_TRANSPORT)) .setApplicationName(APPLICATION_NAME) .build(); Section noteBody = new Section().setText(new TextContent().setText("Finish preparations by tomorrow!")); Note newNote = new Note().setTitle("Customer call next week").setBody(noteBody); // Creates a new text note. service.notes().create(newNote).execute(); } }
تشغيل العيّنة
شغِّل العيّنة:
gradle run
-
في المرة الأولى التي تُشغِّل فيها العيّنة، سيُطلب منك تفويض الوصول:
- إذا لم تكن مسجِّلاً الدخول إلى حسابك على Google، سجِّل الدخول عندما يُطلب منك ذلك. إذا كنت مسجّلاً الدخول إلى حسابات متعددة، اختَر حسابًا واحدًا لاستخدامه في التفويض.
- انقر على قبول.
يُشغِّل تطبيق Java واجهة برمجة التطبيقات Google Keep API ويطلب منها البيانات.
يتم تخزين معلومات التفويض في نظام الملفات، لذا لن يُطلب منك التفويض في المرة التالية التي تُشغّل فيها نموذج الرمز المبرمَج.
الخطوات التالية
- تحديد المشاكل في المصادقة والتفويض وحلّها
- مستندات مرجعية حول Google Keep API
- مستندات حول Google APIs Client لبرنامج Java
- مستندات Javadoc حول Google Keep API