بدء استخدام Java

يمكنكم إنشاء تطبيق يستند إلى أسطر الأوامر بلغة Java ويرسل طلبات إلى Directory API.

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

يستخدم دليل البدء السريع هذا مكتبات عملاء واجهة برمجة التطبيقات المقترَحة من Google Workspace للتعامل مع بعض تفاصيل عملية المصادقة والتفويض.

الأهداف

  • إعداد البيئة
  • إعداد العيّنة
  • تشغيل العيّنة

المتطلبات الأساسية

إعداد البيئة

لإكمال دليل البدء السريع هذا، يجب إعداد البيئة.

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

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

إذا كنتم تستخدمون مشروعًا جديدًا على Google Cloud لإكمال دليل البدء السريع هذا، اضبطوا شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth. إذا سبق لكم إكمال هذه الخطوة لمشروعكم على Cloud، انتقِلوا إلى القسم التالي.

  1. في Google API Console، انتقِلوا إلى "القائمة" menu > منصة Google للمصادقة > العلامة التجارية.

    الانتقال إلى العلامة التجارية

  2. إذا سبق لكم ضبط "منصة Google للمصادقة"، يمكنكم ضبط إعدادات شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth التالية في العلامة التجارية والجمهور والوصول إلى البيانات. إذا ظهرت لكم رسالة لم يتم ضبط "منصة Google للمصادقة" بعد، انقروا على البدء:
    1. ضمن معلومات التطبيق، في اسم التطبيق، أدخِلوا اسمًا للتطبيق.
    2. في البريد الإلكتروني لدعم المستخدمين، اختاروا عنوان بريد إلكتروني للدعم يمكن للمستخدمين التواصل من خلاله إذا كانت لديهم أسئلة حول موافقتهم.
    3. انقروا على التالي.
    4. ضمن الجمهور ، اختاروا داخلي.
    5. انقروا على التالي.
    6. ضمن معلومات الاتصال ، أدخِلوا عنوان بريد إلكتروني يمكنكم تلقّي إشعارات من خلاله بشأن أي تغييرات تطرأ على مشروعكم.
    7. انقروا على التالي.
    8. ضمن إنهاء، راجِعوا سياسة بيانات المستخدمين في خدمات Google API، وإذا كنتم موافقين عليها، اختاروا أوافق على "سياسة بيانات المستخدمين في خدمات Google API".
    9. انقروا على متابعة.
    10. انقروا على إنشاء.
  3. في الوقت الحالي، يمكنكم تخطّي إضافة النطاقات. في المستقبل، عند إنشاء تطبيق لاستخدامه خارج مؤسسة Google Workspace، يجب تغيير نوع المستخدم إلى خارجي. بعد ذلك، أضيفوا نطاقات التفويض التي يتطلبها تطبيقكم. لمزيد من المعلومات، اطّلِعوا على دليل ضبط الموافقة المتعلّقة ببروتوكول OAuth الكامل .

السماح ببيانات اعتماد لتطبيق على الكمبيوتر

لمصادقة المستخدمين النهائيين والوصول إلى بيانات المستخدمين في تطبيقكم، يجب إنشاء معرّف عميل واحد أو أكثر لبروتوكول OAuth 2.0. يُستخدم معرّف العميل لتعريف تطبيق واحد بخوادم OAuth من Google. إذا كان تطبيقكم يعمل على منصات متعددة، يجب إنشاء معرّف عميل منفصل لكل منصة.
  1. في Google Cloud Console، انتقِلوا إلى "القائمة" > منصة Google للمصادقة > العملاء.

    الانتقال إلى العملاء

  2. انقروا على إنشاء عميل.
  3. انقروا على نوع التطبيق > تطبيق متوافق مع الكمبيوتر المكتبي.
  4. في حقل الاسم ، اكتبوا اسمًا لبيانات الاعتماد. لا يظهر هذا الاسم إلا في Google Cloud Console.
  5. اختياري: إذا كان تطبيقكم وكيل ذكاء اصطناعي يتّخذ إجراءات نيابةً عن المستخدمين، اختاروا استخدام هذا العميل لوكيل يستند إلى الذكاء الاصطناعي. إذا كان تطبيقكم يتيح كلاً من سير عمل وكيل الذكاء الاصطناعي وميزات المستخدم العادية، أنشئوا عملاء منفصلين لبروتوكول OAuth لكل منهما. لا يمكنكم تغيير هذا الإعداد بعد إنشاء العميل.
  6. انقروا على إنشاء.

    تظهر بيانات الاعتماد التي تم إنشاؤها حديثًا ضمن "معرّفات عملاء بروتوكول OAuth 2.0".

  7. احفظوا ملف JSON الذي تم تنزيله باسم credentials.json وانقلوا الملف إلى دليل العمل.

إعداد مساحة العمل

  1. في دليل العمل، أنشئوا بنية مشروع جديدة:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources 
    
  2. في الدليل src/main/resources/، انسخوا ملف credentials.json الذي سبق لكم تنزيله.

  3. افتحوا ملف build.gradle التلقائي واستبدلوا محتوياته بالرمز التالي:

    adminSDK/directory/quickstart/build.gradle
    apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'AdminSDKDirectoryQuickstart'
    sourceCompatibility = 11
    targetCompatibility = 11
    version = '1.0'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation 'com.google.api-client:google-api-client:2.0.0'
        implementation 'com.google.oauth-client:google-oauth-client-jetty:1.34.1'
        implementation 'com.google.apis:google-api-services-admin-directory:directory_v1-rev20220919-2.0.0'
    }

إعداد العيّنة

  1. في الدليل src/main/java/، أنشئوا ملف Java جديدًا باسم يطابق قيمة mainClassName في ملف build.gradle.

  2. أدرِجوا الرمز التالي في ملف Java الجديد:

    adminSDK/directory/quickstart/src/main/java/AdminSDKDirectoryQuickstart.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.directory.Directory;
    import com.google.api.services.directory.DirectoryScopes;
    import com.google.api.services.directory.model.User;
    import com.google.api.services.directory.model.Users;
    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 AdminSDKDirectoryQuickstart {
      /**
       * Application name.
       */
      private static final String APPLICATION_NAME = "Google Admin SDK Directory API Java Quickstart";
      /**
       * Global instance of the JSON factory.
       */
      private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
      /**
       * Directory to store authorization tokens for this application.
       */
      private static final String TOKENS_DIRECTORY_PATH = "tokens";
    
      /**
       * Global instance of the scopes required by this quickstart.
       * If modifying these scopes, delete your previously saved tokens/ folder.
       */
      private static final List<String> SCOPES =
          Collections.singletonList(DirectoryScopes.ADMIN_DIRECTORY_USER_READONLY);
      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 If the credentials.json file cannot be found.
       */
      private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT)
          throws IOException {
        // Load client secrets.
        InputStream in = AdminSDKDirectoryQuickstart.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, SCOPES)
            .setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
            .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();
        Directory service =
            new Directory.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
                .setApplicationName(APPLICATION_NAME)
                .build();
    
        // Print the first 10 users in the domain.
        Users result = service.users().list()
            .setCustomer("my_customer")
            .setMaxResults(10)
            .setOrderBy("email")
            .execute();
        List<User> users = result.getUsers();
        if (users == null || users.size() == 0) {
          System.out.println("No users found.");
        } else {
          System.out.println("Users:");
          for (User user : users) {
            System.out.println(user.getName().getFullName());
          }
        }
      }
    }

تشغيل العيّنة

  1. شغِّلوا العيّنة:

    gradle run
    
  1. في المرة الأولى التي تشغِّلون فيها العيّنة، سيُطلب منكم السماح بالوصول:
    1. إذا لم تكونوا مسجِّلين الدخول إلى حسابكم على Google، سجِّلوا الدخول عند المطالبة بذلك. إذا كنتم مسجِّلين الدخول إلى حسابات متعددة، اختاروا حسابًا واحدًا لاستخدامه في التفويض.
    2. انقروا على حسنًا.

    سيتم تشغيل تطبيق Java وطلب بيانات من Directory API.

    يتم تخزين معلومات التفويض في نظام الملفات، لذا لن يُطلب منكم التفويض في المرة التالية التي تشغِّلون فيها رمز العيّنة.

الخطوات التالية