কুইকস্টার্টে যান

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

কুইকস্টার্টে ব্যাখ্যা করা হয়েছে যে কীভাবে এমন অ্যাপ সেট-আপ ও রান করতে হয় যা 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. ওয়ার্কিং ডিরেক্টরি তৈরি করুন:

    mkdir quickstart
    
  2. ওয়ার্কিং ডিরেক্টরি পরিবর্তন করুন:

    cd quickstart
    
  3. নতুন মডিউল ইনিশিয়ালাইজ করুন:

    go mod init quickstart
    
  4. Directory API Go ক্লায়েন্ট লাইব্রেরি ও OAuth2.0 প্যাকেজ পান:

    go get google.golang.org/api/admin/directory/v1
    go get golang.org/x/oauth2/google
    

স্যাম্পেল সেট-আপ করুন

  1. আপনার ওয়ার্কিং ডিরেক্টরিতে, quickstart.go নামের একটি ফাইল তৈরি করুন।

  2. ফাইলে, নিম্নলিখিত কোড পেস্ট করুন:

    admin_sdk/directory/quickstart.go
    package main
    
    import (
    	"context"
    	"encoding/json"
    	"fmt"
    	"log"
    	"net/http"
    	"os"
    
    	"golang.org/x/oauth2"
    	"golang.org/x/oauth2/google"
    	admin "google.golang.org/api/admin/directory/v1"
    	"google.golang.org/api/option"
    )
    
    // Retrieve a token, saves the token, then returns the generated client.
    func getClient(config *oauth2.Config) *http.Client {
    	// The file token.json stores the user's access and refresh tokens, and is
    	// created automatically when the authorization flow completes for the first
    	// time.
    	tokFile := "token.json"
    	tok, err := tokenFromFile(tokFile)
    	if err != nil {
    		tok = getTokenFromWeb(config)
    		saveToken(tokFile, tok)
    	}
    	return config.Client(context.Background(), tok)
    }
    
    // Request a token from the web, then returns the retrieved token.
    func getTokenFromWeb(config *oauth2.Config) *oauth2.Token {
    	authURL := config.AuthCodeURL("state-token", oauth2.AccessTypeOffline)
    	fmt.Printf("Go to the following link in your browser then type the "+
    		"authorization code: \n%v\n", authURL)
    
    	var authCode string
    	if _, err := fmt.Scan(&authCode); err != nil {
    		log.Fatalf("Unable to read authorization code: %v", err)
    	}
    
    	tok, err := config.Exchange(context.TODO(), authCode)
    	if err != nil {
    		log.Fatalf("Unable to retrieve token from web: %v", err)
    	}
    	return tok
    }
    
    // Retrieves a token from a local file.
    func tokenFromFile(file string) (*oauth2.Token, error) {
    	f, err := os.Open(file)
    	if err != nil {
    		return nil, err
    	}
    	defer f.Close()
    	tok := &oauth2.Token{}
    	err = json.NewDecoder(f).Decode(tok)
    	return tok, err
    }
    
    // Saves a token to a file path.
    func saveToken(path string, token *oauth2.Token) {
    	fmt.Printf("Saving credential file to: %s\n", path)
    	f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
    	if err != nil {
    		log.Fatalf("Unable to cache oauth token: %v", err)
    	}
    	defer f.Close()
    	json.NewEncoder(f).Encode(token)
    }
    
    func main() {
    	ctx := context.Background()
    	b, err := os.ReadFile("credentials.json")
    	if err != nil {
    		log.Fatalf("Unable to read client secret file: %v", err)
    	}
    
    	// If modifying these scopes, delete your previously saved token.json.
    	config, err := google.ConfigFromJSON(b, admin.AdminDirectoryUserReadonlyScope)
    	if err != nil {
    		log.Fatalf("Unable to parse client secret file to config: %v", err)
    	}
    	client := getClient(config)
    
    	srv, err := admin.NewService(ctx, option.WithHTTPClient(client))
    	if err != nil {
    		log.Fatalf("Unable to retrieve directory Client %v", err)
    	}
    
    	r, err := srv.Users.List().Customer("my_customer").MaxResults(10).
    		OrderBy("email").Do()
    	if err != nil {
    		log.Fatalf("Unable to retrieve users in domain: %v", err)
    	}
    
    	if len(r.Users) == 0 {
    		fmt.Print("No users found.\n")
    	} else {
    		fmt.Print("Users:\n")
    		for _, u := range r.Users {
    			fmt.Printf("%s (%s)\n", u.PrimaryEmail, u.Name.FullName)
    		}
    	}
    }

স্যাম্পেল রান করুন

  1. আপনার ওয়ার্কিং ডিরেক্টরিতে, স্যাম্পেল তৈরি ও রান করুন:

    go run quickstart.go
    
  1. প্রথমবার স্যাম্পেল রান করার সময়, এটি আপনাকে অ্যাক্সেস অনুমোদন করার জন্য প্রম্পট করে:
    1. আপনি আগে থেকে নিজের Google অ্যাকাউন্টে সাইন-ইন করে না থাকলে, প্রম্পট করা হলে সাইন-ইন করুন। আপনি একাধিক অ্যাকাউন্টে সাইন-ইন করে থাকলে, অনুমোদনের জন্য একটি অ্যাকাউন্ট বেছে নিন।
    2. স্বীকার করুন বিকল্পে ক্লিক করুন।

    আপনার Go অ্যাপ্লিকেশন রান করে এবং Directory API কল করে।

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

পরবর্তী ধাপ