بدء سريع

يمكنكم إنشاء تطبيق سطر أوامر بلغة Go يرسل طلبات إلى 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. أنشِئوا دليل عمل:

    mkdir quickstart
    
  2. انتقِلوا إلى دليل العمل:

    cd quickstart
    
  3. ابدأوا الوحدة الجديدة:

    go mod init quickstart
    
  4. احصلوا على مكتبة عميل Go الخاصة بـ Directory API وحزمة 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.

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

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