Java কুইকস্টার্ট

Directory API-তে অনুরোধ করে এমন একটি Java কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করুন।

কুইকস্টার্টে ব্যাখ্যা করা হয়েছে যে কীভাবে এমন অ্যাপ সেট-আপ ও রান করতে হয় যা Google Workspace API কল করে। এই কুইকস্টার্টে যাচাইকরণের একটি সহজ পদ্ধতি ব্যবহার করা হয় যা টেস্টিং এনভায়রনমেন্টের জন্য উপযুক্ত। প্রোডাকশন এনভায়রনমেন্টের জন্য, আপনার অ্যাপের পক্ষে উপযুক্ত অ্যাক্সেস ক্রেডেনশিয়াল বেছে নেওয়ার আগে যাচাইকরণ ও অনুমোদন সম্পর্কে জেনে নেওয়ার সাজেশন আমরা দিই।

এই কুইকস্টার্ট যাচাইকরণ ও অনুমোদনের ফ্লোয়ের কিছু বিবরণ ম্যানেজ করতে Google Workspace-এর সাজেস্ট করা API ক্লায়েন্ট লাইব্রেরি ব্যবহার করে।

উদ্দেশ্য

  • আপনার এনভায়রনমেন্ট সেট-আপ করুন।
  • স্যাম্পেল সেট-আপ করুন।
  • স্যাম্পেল রান করুন।

পূর্বশর্ত

  • API অ্যাক্সেস চালু করা Google Workspace ডোমেন।
  • অ্যাডমিনিস্ট্রেটরের বিশেষ সুবিধা সহ সেই ডোমেনে একটি Google অ্যাকাউন্ট।

আপনার পরিবেশ সেট-আপ করা

এই কুইকস্টার্ট সম্পূর্ণ করতে, আপনার এনভায়র্নমেন্ট সেট-আপ করুন।

API চালু করুন

Google API ব্যবহার করার আগে, আপনাকে Google Cloud প্রোজেক্টে সেগুলি চালু করতে হবে। আপনি একটি Google Cloud প্রোজেক্টে এক বা একাধিক API চালু করতে পারবেন।

এই কুইকস্টার্ট সম্পূর্ণ করার জন্য আপনি নতুন Google Cloud প্রোজেক্ট ব্যবহার করলে, OAuth-এর সম্মতি সংক্রান্ত স্ক্রিন কনফিগার করুন। আপনি যদি আগেই আপনার ক্লাউড প্রোজেক্টের জন্য এই ধাপটি সম্পূর্ণ করে থাকেন, তাহলে পরবর্তী বিভাগে যান।

  1. Google API Console-এ, 'মেনু > Google Auth প্ল্যাটফর্ম > ব্র্যান্ডিং' বিকল্পে যান।

    ব্র্যান্ডিং বিকল্পে যান

  2. আপনি যদি আগে থেকেই Google Auth প্ল্যাটফর্ম কনফিগার করে থাকেন, তাহলে আপনি ব্র্যান্ডিং, দর্শক এবং ডেটা অ্যাক্সেস-এ নিম্নলিখিত OAuth-এর সম্মতি সংক্রান্ত স্ক্রিন সেটিংস কনফিগার করতে পারবেন। আপনি যদি এমন কোনও মেসেজ দেখতে পান যাতে লেখা আছে Google Auth প্ল্যাটফর্ম এখনও কনফিগার করা হয়নি, তাহলে শুরু করুন বিকল্পে ক্লিক করুন:
    1. অ্যাপের তথ্য বিকল্পের অধীনে, অ্যাপের নাম বিকল্পে, অ্যাপের জন্য একটি নাম লিখুন।
    2. ব্যবহারকারী সহায়তা ইমেল-এ, একটি সহায়তা ইমেল আইডি বেছে নিন যেখানে ব্যবহারকারীরা তাদের সম্মতি সম্পর্কে প্রশ্ন থাকলে আপনার সাথে যোগাযোগ করতে পারবেন।
    3. পরবর্তী বিকল্পে ক্লিক করুন।
    4. দর্শক বিকল্পের অধীনে, ইন্টার্নাল বিকল্প বেছে নিন।
    5. পরবর্তী বিকল্পে ক্লিক করুন।
    6. যোগাযোগের তথ্য বিকল্পের মধ্যে, একটি ইমেল আইডি লিখুন যেখানে আপনার প্রোজেক্টে কোনও পরিবর্তন হলে আপনাকে জানানো যেতে পারে।
    7. পরবর্তী বিকল্পে ক্লিক করুন।
    8. শেষ করুন বিকল্পের মধ্যে, Google API পরিষেবা সংক্রান্ত ব্যবহারকারীর ডেটা নীতি পর্যালোচনা করুন এবং আপনি সম্মত হলে, আমি Google API পরিষেবা: ব্যবহারকারীর ডেটা নীতিতে সম্মতি জানাচ্ছি বিকল্প বেছে নিন।
    9. চালিয়ে যান বিকল্পে ক্লিক করুন।
    10. তৈরি করুন বিকল্পে ক্লিক করুন।
  3. আপাতত, আপনি স্কোপ যোগ করা এড়িয়ে যেতে পারেন। ভবিষ্যতে, আপনার Google Workspace সংস্থার বাইরে ব্যবহার করার জন্য কোনও অ্যাপ তৈরি করলে, আপনাকে অবশ্যই ব্যবহারকারীর ধরন পরিবর্তন করে এক্সটার্নাল করতে হবে। তারপরে আপনার অ্যাপের প্রয়োজনীয় অনুমোদনের স্কোপ যোগ করুন। আরও জানতে, সম্পূর্ণ OAuth সম্মতি কনফিগার করুন গাইড দেখুন।

ডেস্কটপ অ্যাপ্লিকেশনের জন্য ক্রেডেনশিয়াল অনুমোদন করা

আপনার অ্যাপে ব্যবহারকারীর ডেটা অ্যাক্সেস করতে এবং এন্ড ইউজারকে যাচাই করতে, আপনাকে এক বা একাধিক OAuth 2.0 ক্লায়েন্ট আইডি তৈরি করতে হবে। Google-এর OAuth সার্ভারে একটি অ্যাপ শনাক্ত করতে ক্লায়েন্ট আইডি ব্যবহার করা হয়। আপনার অ্যাপ একাধিক প্ল্যাটফর্মে চললে, প্রতিটি প্ল্যাটফর্মের জন্য আপনাকে আলাদা ক্লায়েন্ট আইডি তৈরি করতে হবে।
  1. Google Cloud Console-এ, 'মেনু > Google Auth প্ল্যাটফর্ম > ক্লায়েন্ট' বিকল্পে যান।

    ক্লায়েন্টে যান

  2. ক্লায়েন্ট তৈরি করুন বিকল্পে ক্লিক করুন।
  3. অ্যাপ্লিকেশনের ধরন > ডেস্কটপ অ্যাপ বিকল্পে ক্লিক করুন।
  4. নাম ফিল্ডে, ক্রেডেনশিয়ালের জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google Cloud Console-এ দেখানো হয়।
  5. ঐচ্ছিক: আপনার অ্যাপ যদি এমন কোনও AI এজেন্ট হয় যা ব্যবহারকারীর হয়ে অ্যাকশন নেয়, তাহলে AI-পরিচালিত এজেন্টের জন্য এই ক্লায়েন্ট ব্যবহার করুন বিকল্প বেছে নিন। আপনার অ্যাপ যদি AI এজেন্ট ওয়ার্কফ্লো এবং স্ট্যান্ডার্ড ব্যবহারকারী ফিচার, দুটির সাথেই কাজ করে, তাহলে প্রতিটির জন্য আলাদা 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/ ডিরেক্টরিতে, এমন একটি নাম সহ একটি নতুন জাভা ফাইল তৈরি করুন যা আপনার build.gradle ফাইলের mainClassName ভ্যালুর সাথে ম্যাচ করে।

  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 কল করে।

    অনুমোদনের তথ্য ফাইল সিস্টেমে স্টোর করা হয়, তাই পরের বার আপনি স্যাম্পেল কোড রান করলে, আপনাকে অনুমোদনের জন্য প্রম্পট করা হয় না।

পরবর্তী ধাপ