به عنوان یک کاربر گپ Google احراز هویت و مجوز دهید

این راهنما نحوه استفاده از OAuth 2.0 را با اطلاعات کاربری Google کاربران برای دسترسی به Chat API توضیح می دهد. احراز هویت و تأیید اعتبار با استفاده از اطلاعات کاربری به برنامه‌های Chat اجازه می‌دهد به داده‌های کاربر دسترسی داشته باشند و عملیات‌ها را از طرف کاربر تأیید شده انجام دهند. با احراز هویت از طرف یک کاربر، برنامه دارای مجوزهای مشابه با آن کاربر است و می تواند اقداماتی را انجام دهد که گویی توسط آن کاربر انجام شده است.

پس از احراز هویت و تأیید یک تماس API با اطلاعات کاربری، برنامه‌های چت می‌توانند کارهای زیر را انجام دهند:

هنگامی که یک برنامه عملکردی را با احراز هویت کاربر انجام می‌دهد (مانند ایجاد یک فضا)، Google Chat یک پیام انتساب نمایش می‌دهد که نام برنامه‌ای را که این عمل را برای کاربر مجاز انجام داده است، به کاربران می‌گوید.

برنامه Google Chat فضایی را برای کاربر ایجاد می کند.
شکل 1 . پیام انتسابی که Google Chat هنگامی که یک برنامه Chat فضایی را از طرف یک کاربر ایجاد می‌کند، نمایش می‌دهد.

برای اطلاعات بیشتر در مورد اینکه چه زمانی برنامه‌های گپ به احراز هویت نیاز دارند و از چه نوع احراز هویتی استفاده می‌کنند، به انواع احراز هویت مورد نیاز در نمای کلی احراز هویت و مجوز Chat API مراجعه کنید.

به عنوان یک سرپرست Google Workspace احراز هویت و مجوز دهید

این بخش توضیح می‌دهد که چگونه مدیران فضای کاری Google Workspace می‌توانند برنامه‌ها و فضاهای Google Chat را در سراسر سازمان خود با احراز هویت کاربر مدیریت کنند.

با استفاده از تفویض اختیار در سطح دامنه، احراز هویت و مجوز

اگر یک سرپرست دامنه هستید، می‌توانید اختیاری را در سراسر دامنه اعطا کنید تا به حساب سرویس یک برنامه اجازه دسترسی به داده‌های کاربران شما را بدون نیاز به رضایت هر کاربر بدهد. پس از پیکربندی نمایندگی در سراسر دامنه، حساب سرویس می‌تواند هویت یک حساب کاربری را جعل کند . اگرچه یک حساب سرویس برای احراز هویت استفاده می‌شود، اما تفویض اختیار در دامنه، هویت کاربر را جعل می‌کند و بنابراین احراز هویت کاربر در نظر گرفته می‌شود. هر عملکردی که نیاز به احراز هویت کاربر داشته باشد، می‌توانید از تفویض اختیار در سطح دامنه استفاده کنید.

احراز هویت و مجوز با استفاده از امتیازات مدیر

اگر یک سرپرست دامنه یا یک سرپرست تفویض شده با امتیازات سرپرست هستید، می‌توانید با تنظیم فیلد useAdminAccess در درخواست‌های روش‌های قابل‌اجرا، تماس‌های خود با Google Chat API را با امتیازات سرپرست تأیید و مجوز دهید. برای اطلاعات بیشتر، به مستندات مرجع API مراجعه کنید.

توجه داشته باشید که وقتی یک برنامه Google Chat عملکردی را با امتیازات سرپرست انجام می‌دهد، Chat به کاربران نمی‌گوید نام برنامه Chat که این کار را انجام داده است یا نام سرپرستی که آن را مجاز کرده است، بلکه فقط به کاربران می‌گوید که این عمل توسط آنها انجام شده است. مدیر سازمان

پیش نیازها

جاوا

پایتون

Node.js

اسکریپت برنامه ها

مرحله 1: صفحه رضایت OAuth را پیکربندی کنید، محدوده ها را مشخص کنید و برنامه خود را ثبت کنید

وقتی از OAuth 2.0 برای مجوز استفاده می‌کنید، Google یک صفحه رضایت شامل خلاصه پروژه شما، خط‌مشی‌های آن و محدوده‌های مجوز درخواستی را به کاربر نمایش می‌دهد. پیکربندی صفحه رضایت OAuth برنامه شما، آنچه را Google برای کاربران و بازبینان برنامه نمایش می دهد، مشخص می کند و برنامه شما را ثبت می کند تا بتوانید بعداً آن را منتشر کنید.

همه برنامه‌هایی که از OAuth 2.0 استفاده می‌کنند نیاز به پیکربندی صفحه رضایت دارند، اما شما فقط باید دامنه برنامه‌هایی را که توسط افراد خارج از سازمان Google Workspace شما استفاده می‌شوند فهرست کنید.

  1. در کنسول Google Cloud، به منو > APIs & Services > صفحه رضایت OAuth بروید.

    به صفحه رضایت OAuth بروید

  2. نوع کاربری برنامه خود را انتخاب کنید، سپس روی ایجاد کلیک کنید.

  3. فرم ثبت نام برنامه را تکمیل کنید، سپس روی ذخیره و ادامه کلیک کنید.

  4. روی Add or Remove Scopes کلیک کنید. محدوده‌های مجوز مورد نیاز برنامه خود را اضافه و تأیید کنید، روی به‌روزرسانی کلیک کنید، سپس روی ذخیره و ادامه کلیک کنید.

  5. خلاصه ثبت برنامه خود را مرور کنید. برای ایجاد تغییرات روی ویرایش کلیک کنید، یا روی برگشت به داشبورد کلیک کنید.

مرحله 2: شناسه مشتری OAuth را در کنسول Google Cloud ایجاد کنید

برای احراز هویت به عنوان کاربر نهایی و دسترسی به داده های کاربر در برنامه خود، باید یک یا چند شناسه مشتری OAuth 2.0 ایجاد کنید. شناسه مشتری برای شناسایی یک برنامه واحد در سرورهای OAuth Google استفاده می شود. اگر برنامه شما روی چندین پلتفرم اجرا می شود - مانند Android، iOS و وب - باید برای هر پلتفرم یک شناسه مشتری جداگانه ایجاد کنید.

شناسه مشتری OAuth ایجاد کنید

نوع برنامه خود را برای دستورالعمل های خاص در مورد نحوه ایجاد شناسه مشتری OAuth انتخاب کنید:

برنامه وب

  1. در کنسول Google Cloud، به منو > APIs & Services > Credentials بروید.

    به Credentials بروید

  2. روی ایجاد اعتبارنامه > شناسه مشتری OAuth کلیک کنید.
  3. روی نوع برنامه > برنامه وب کلیک کنید.
  4. در قسمت نام ، نامی را برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نشان داده می شود.
  5. URI های مجاز مرتبط با برنامه خود را اضافه کنید:
    • برنامه‌های سمت کلاینت (جاوا اسکریپت) - در زیر مبدا مجاز جاوا اسکریپت ، روی افزودن URI کلیک کنید. سپس، یک URI را برای استفاده برای درخواست های مرورگر وارد کنید. این دامنه‌هایی را که برنامه شما می‌تواند درخواست‌های API را به سرور OAuth 2.0 ارسال کند، مشخص می‌کند.
    • برنامه‌های سمت سرور (جاوا، پایتون و موارد دیگر) - در زیر URI‌های مجاز تغییر مسیر ، روی Add URI کلیک کنید. سپس، یک URI نقطه پایانی را وارد کنید که سرور OAuth 2.0 می‌تواند پاسخ‌ها را به آن ارسال کند.
  6. روی ایجاد کلیک کنید. صفحه ایجاد شده توسط سرویس گیرنده OAuth ظاهر می شود که شناسه مشتری و راز مشتری جدید شما را نشان می دهد.

    به شناسه مشتری توجه کنید. اسرار مشتری برای برنامه های کاربردی وب استفاده نمی شود.

  7. روی OK کلیک کنید. اعتبار جدید ایجاد شده در شناسه های مشتری OAuth 2.0 ظاهر می شود.

اندروید

  1. در کنسول Google Cloud، به منو > APIs & Services > Credentials بروید.

    به Credentials بروید

  2. روی ایجاد اعتبارنامه > شناسه مشتری OAuth کلیک کنید.
  3. روی نوع برنامه > Android کلیک کنید.
  4. در قسمت "Name" یک نام برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نشان داده می شود.
  5. در قسمت «نام بسته»، نام بسته را از فایل AndroidManifest.xml خود وارد کنید.
  6. در قسمت "اثر انگشت گواهی SHA-1"، اثر انگشت گواهینامه SHA-1 تولید شده خود را وارد کنید.
  7. روی ایجاد کلیک کنید. صفحه ایجاد شده سرویس گیرنده OAuth ظاهر می شود که شناسه مشتری جدید شما را نشان می دهد.
  8. روی OK کلیک کنید. اعتبار جدید ایجاد شده در زیر "OAuth 2.0 Client IDs" ظاهر می شود.

iOS

  1. در کنسول Google Cloud، به منو > APIs & Services > Credentials بروید.

    به Credentials بروید

  2. روی ایجاد اعتبارنامه > شناسه مشتری OAuth کلیک کنید.
  3. روی نوع برنامه > iOS کلیک کنید.
  4. در قسمت "Name" یک نام برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نشان داده می شود.
  5. در قسمت "Bundle ID"، شناسه بسته را همانطور که در فایل Info.plist برنامه ذکر شده است وارد کنید.
  6. اختیاری: اگر برنامه شما در Apple App Store ظاهر شد، شناسه فروشگاه App را وارد کنید.
  7. اختیاری: در قسمت "تیم ID"، رشته 10 کاراکتری منحصر به فرد را وارد کنید که توسط اپل تولید شده و به تیم شما اختصاص داده شده است.
  8. روی ایجاد کلیک کنید. صفحه ایجاد شده توسط سرویس گیرنده OAuth ظاهر می شود که شناسه مشتری و راز مشتری جدید شما را نشان می دهد.
  9. روی OK کلیک کنید. اعتبار جدید ایجاد شده در زیر "OAuth 2.0 Client IDs" ظاهر می شود.

برنامه کروم

  1. در کنسول Google Cloud، به منو > APIs & Services > Credentials بروید.

    به Credentials بروید

  2. روی ایجاد اعتبارنامه > شناسه مشتری OAuth کلیک کنید.
  3. روی نوع برنامه > برنامه Chrome کلیک کنید.
  4. در قسمت "Name" یک نام برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نشان داده می شود.
  5. در قسمت «شناسه برنامه»، رشته شناسه منحصربه‌فرد 32 نویسه‌ای برنامه خود را وارد کنید. می‌توانید این مقدار شناسه را در URL فروشگاه وب Chrome برنامه خود و در داشبورد برنامه‌نویس فروشگاه وب Chrome پیدا کنید.
  6. روی ایجاد کلیک کنید. صفحه ایجاد شده توسط سرویس گیرنده OAuth ظاهر می شود که شناسه مشتری و راز مشتری جدید شما را نشان می دهد.
  7. روی OK کلیک کنید. اعتبار جدید ایجاد شده در زیر "OAuth 2.0 Client IDs" ظاهر می شود.

برنامه دسکتاپ

  1. در کنسول Google Cloud، به منو > APIs & Services > Credentials بروید.

    به Credentials بروید

  2. روی ایجاد اعتبارنامه > شناسه مشتری OAuth کلیک کنید.
  3. روی نوع برنامه > برنامه دسکتاپ کلیک کنید.
  4. در قسمت نام ، نامی را برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نشان داده می شود.
  5. روی ایجاد کلیک کنید. صفحه ایجاد شده توسط سرویس گیرنده OAuth ظاهر می شود که شناسه مشتری و راز مشتری جدید شما را نشان می دهد.
  6. روی OK کلیک کنید. اعتبار جدید ایجاد شده در شناسه های مشتری OAuth 2.0 ظاهر می شود.

تلویزیون ها و دستگاه های ورودی محدود

  1. در کنسول Google Cloud، به منو > APIs & Services > Credentials بروید.

    به Credentials بروید

  2. روی ایجاد اعتبارنامه > شناسه مشتری OAuth کلیک کنید.
  3. روی نوع برنامه > تلویزیون‌ها و دستگاه‌های ورودی محدود کلیک کنید.
  4. در قسمت "Name" یک نام برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نشان داده می شود.
  5. روی ایجاد کلیک کنید. صفحه ایجاد شده توسط سرویس گیرنده OAuth ظاهر می شود که شناسه مشتری و راز مشتری جدید شما را نشان می دهد.
  6. روی OK کلیک کنید. اعتبار جدید ایجاد شده در زیر "OAuth 2.0 Client IDs" ظاهر می شود.

پلتفرم جهانی ویندوز (UWP)

  1. در کنسول Google Cloud، به منو > APIs & Services > Credentials بروید.

    به Credentials بروید

  2. روی ایجاد اعتبارنامه > شناسه مشتری OAuth کلیک کنید.
  3. روی نوع برنامه > Universal Windows Platform (UWP) کلیک کنید.
  4. در قسمت "Name" یک نام برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نشان داده می شود.
  5. در قسمت «Store ID»، مقدار شناسه فروشگاه مایکروسافت 12 کاراکتری منحصر به فرد برنامه خود را وارد کنید. می‌توانید این شناسه را در URL فروشگاه مایکروسافت برنامه‌تان و در مرکز شریک پیدا کنید.
  6. روی ایجاد کلیک کنید. صفحه ایجاد شده توسط سرویس گیرنده OAuth ظاهر می شود که شناسه مشتری و راز مشتری جدید شما را نشان می دهد.
  7. روی OK کلیک کنید. اعتبار جدید ایجاد شده در زیر "OAuth 2.0 Client IDs" ظاهر می شود.

فایل JSON مخفی مشتری را دانلود کنید

فایل مخفی سرویس گیرنده نمایشی JSON از اعتبارنامه های شناسه مشتری OAuth است که برنامه Chat شما می تواند هنگام ارائه اعتبارنامه به آن ارجاع دهد.

  1. در کنسول Google Cloud، به منو > APIs & Services > Credentials بروید.

    به Credentials بروید

  2. در بخش شناسه‌های مشتری OAuth 2.0 ، روی شناسه مشتری که ایجاد کرده‌اید کلیک کنید.

  3. روی دانلود JSON کلیک کنید.

  4. فایل را به عنوان client_secrets.json ذخیره کنید.

مرحله 3: کتابخانه مشتری Google و سایر وابستگی ها را نصب کنید

کتابخانه مشتری Google و سایر وابستگی های مورد نیاز برای پروژه را نصب کنید.

جاوا

برای افزودن کتابخانه های سرویس گیرنده Google و سایر وابستگی های مورد نیاز به پروژه Maven خود، فایل pom.xml را در فهرست پروژه خود ویرایش کنید و وابستگی های زیر را اضافه کنید:

<dependencies>
  <!-- ... existing dependencies ... -->
  <dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-chat</artifactId>
    <version>v1-rev20230905-2.0.0</version>
  </dependency>
  <dependency>
    <groupId>com.google.auth</groupId>
    <artifactId>google-auth-library-oauth2-http</artifactId>
    <version>1.19.0</version>
  </dependency>
  <dependency>
    <groupId>com.google.oauth-client</groupId>
    <artifactId>google-oauth-client-jetty</artifactId>
    <version>1.34.1</version>
  </dependency>
  <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.10.1</version>
  </dependency>
</dependencies>

پایتون

اگر قبلاً کتابخانه های سرویس گیرنده Google را برای پایتون نصب نکرده اید، دستور زیر را در رابط خط فرمان خود اجرا کنید:

pip3 install --upgrade google-api-python-client google-auth-oauthlib

Node.js

برای افزودن کتابخانه‌های سرویس گیرنده Google و سایر وابستگی‌های مورد نیاز به پروژه Node.js، به دایرکتوری پروژه خود بروید و دستور زیر را در رابط خط فرمان خود اجرا کنید:

npm install "@googleapis/chat" open server-destroy

اسکریپت برنامه ها

این نمونه از سرویس Advanced Chat برای فراخوانی Google Chat API استفاده می کند. برای روشن کردن سرویس پروژه Apps Script:

  1. در سمت چپ، روی ویرایشگر کلیک کنید.
  2. در سمت چپ، در کنار خدمات ، روی افزودن سرویس کلیک کنید.
  3. Google Chat API را انتخاب کنید.
  4. در نسخه ، v1 را انتخاب کنید.
  5. روی افزودن کلیک کنید.

شما می توانید از هر زبانی که توسط کتابخانه های مشتری ما پشتیبانی می شود استفاده کنید.

مرحله 4: اسکریپتی بنویسید که Chat API را فراخوانی کند

فراخوانی یک API با مجوز OAuth یک فرآیند چند مرحله ای است. در برنامه های وب یا دسکتاپ، فرآیند معمولاً به شرح زیر است:

  1. این برنامه کاربر را به یک صفحه مجوز هدایت می کند که درخواست دسترسی به داده های کاربر مشخص شده توسط محدوده مجوز را دارد. برنامه خود را با شناسه مشتری شناسایی می کند.
  2. کاربر مجوزهای درخواست شده توسط برنامه را بررسی کرده و درخواست را تایید می کند.
  3. سرور احراز هویت Google مرورگر را به نقطه پایانی HTTP برنامه همراه با یک کد مجوز هدایت می کند.
  4. برنامه درخواست دیگری را به سرور مجوز Google ارسال می کند تا کد مجوز را برای یک رمز دسترسی مبادله کند.
  5. برنامه از توکن دسترسی برای فراخوانی API از طرف کاربر استفاده می کند.

برای کسب اطلاعات بیشتر در مورد فرآیند مجوز OAuth، به راهنمای استفاده از OAuth 2.0 برای دسترسی به Google APIs مراجعه کنید.

نمونه کد زیر در جاوا، پایتون و Node.js از یک کتابخانه مشتری برای اجرای جریان مجوز OAuth استفاده می کند. یک سرور HTTP محلی را باز می کند تا کد مجوز را از سرور مجوز دریافت کند و سپس آن را با یک نشانه دسترسی مبادله می کند. در نمونه کد Apps Script، این جریان مجوز توسط Apps Script مدیریت می‌شود.

پس از تکمیل جریان احراز هویت، اسکریپت با Chat API با استفاده از رمز دسترسی کاربر، احراز هویت می‌شود و سپس یک فاصله ایجاد می‌کند.

جاوا

  1. در فهرست پروژه خود، فایل src/main/java/com/google/chat/app/authsample/App.java باز کنید.
  2. محتوای App.java را با کد زیر جایگزین کنید:

    package com.google.chat.app.authsample;
    
    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.HttpTransport;
    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.chat.v1.HangoutsChat;
    import com.google.api.services.chat.v1.model.Space;
    
    import java.io.InputStreamReader;
    import java.util.Collection;
    import java.util.Collections;
    
    /**
     * Authenticates with Chat API via user credentials, then creates a Chat space.
     */
    public class App {
        // Application OAuth credentials.
        private static final String KEYS_RESOURCE_URI = "/client_secrets.json";
    
        // Define your app's authorization scopes.
        private static final Collection<String> SCOPES =
            Collections.singleton("https://www.googleapis.com/auth/chat.spaces.create");
    
        // Directory to store user credentials.
        private static final java.io.File DATA_STORE_DIR =
            new java.io.File(System.getProperty("user.home"), ".store/auth-sample-app");
    
        // Global instance of the JSON factory.
        private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
    
        // Global instance of the HTTP transport.
        private static HttpTransport httpTransport;
    
        // Global instance of the DataStoreFactory. The best practice is to make it a single
        // globally shared instance across your application.
        private static FileDataStoreFactory dataStoreFactory;
    
        public static void main( String[] args ) {
            try {
                // Run app.
                httpTransport = GoogleNetHttpTransport.newTrustedTransport();
                dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
                Credential userCredential = authorize();
                Space response = App.createChatSpace(userCredential);
                // Print details about the created space.
                System.out.println(response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * Authorizes the installed application to access user's protected data.
         */
        private static Credential authorize() throws Exception {
            // Load client secrets.
            GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
                new InputStreamReader(App.class.getResourceAsStream("/client_secrets.json")));
            // Set up authorization code flow.
            GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                httpTransport, JSON_FACTORY, clientSecrets, SCOPES)
                .setDataStoreFactory(dataStoreFactory)
                .build();
            // Authorize.
            return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
        }
    
        /**
         * Creates a Chat space.
         */
        private static Space createChatSpace(Credential userCredential) throws Exception {
            // Build the Chat API client and authenticate with the user account.
            HangoutsChat chatService = new HangoutsChat.Builder(
                httpTransport, JSON_FACTORY, userCredential)
                .setApplicationName("auth-sample-app")
                .build();
    
            // Create a Chat space.
            Space space = new Space()
                // To create a named space, set spaceType to SPACE.
                .setSpaceType("SPACE")
                // The user-visible name of the space.
                .setDisplayName("API-made");
            return chatService.spaces().create(space).execute();
        }
    }
    
  3. یک زیر شاخه جدید با نام resources در دایرکتوری پروژه خود ایجاد کنید.

  4. فایل client_secrets.json را در زیر شاخه resources کپی کنید.

  5. برای پیکربندی Maven برای گنجاندن فایل مخفی مشتری در بسته پروژه، فایل pom.xml را در دایرکتوری پروژه خود ویرایش کنید و پیکربندی زیر را به بخش <build> اضافه کنید:

    <build>
      <!-- ... existing configurations ... -->
      <resources>
        <resource>
          <directory>resources</directory>
        </resource>
      </resources>
    </build>
    
  6. برای پیکربندی Maven برای گنجاندن وابستگی ها در بسته پروژه و اجرای کلاس اصلی برنامه، فایل pom.xml را در فهرست پروژه خود ویرایش کنید و پیکربندی زیر را به بخش <plugins> اضافه کنید:

    <plugins>
      <!-- ... existing configurations ... -->
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>com.google.chat.app.authsample.App</mainClass>
            </manifest>
          </archive>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
    

پایتون

  1. کد زیر را در فایلی به نام chat_space_create_named.py در همان دایرکتوری که client_secrets.json دارد ذخیره کنید:

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"]
    
    def main():
      '''
      Authenticates with Chat API via user credentials,
      then creates a Chat space.
      '''
    
      flow = InstalledAppFlow.from_client_secrets_file(
                        'client_secrets.json', SCOPES)
      creds = flow.run_local_server()
    
      # Build a service endpoint for Chat API.
      service = build('chat', 'v1', credentials=creds)
    
      # Use the service endpoint to call Chat API.
      result = service.spaces().create(
    
        # Details about the space to create.
        body = {
    
          # To create a named space, set spaceType to SPACE.
          'spaceType': 'SPACE',
    
          # The user-visible name of the space.
          'displayName': 'API-made'
    
        }
    
      ).execute()
    
      # Prints details about the created space.
      print(result)
    
    if __name__ == '__main__':
      main()
    

Node.js

  1. کد زیر را در فایلی به نام chat_space_create_named.js در همان دایرکتوری که پروژه Node.js و client_secrets.json را نگه می دارد ذخیره کنید:

    const fs = require('fs');
    const path = require('path');
    const http = require('http');
    const url = require('url');
    const destroyer = require('server-destroy');
    
    const chat = require('@googleapis/chat');
    
    // Application OAuth credentials.
    const keys = require('./client_secrets.json').installed;
    
    // Define your app's authorization scopes.
    // When modifying these scopes, delete the file token.json, if it exists.
    const scopes = ["https://www.googleapis.com/auth/chat.spaces.create"];
    
    // Create a new OAuth2 client with the configured keys.
    const oauth2Client = new chat.auth.OAuth2(
      keys.client_id,
      keys.client_secret,
      'http://localhost:3000'
    );
    
    /**
     * Opens an HTTP server to accept the OAuth callback.
     * In this simple example, the only request to our webserver is to /?code=<code>.
     */
    async function authenticate(scopes) {
      const opn = (await import('open')).default;
    
      return new Promise((resolve, reject) => {
        // Generate the URL for authorization.
        const authorizeUrl = oauth2Client.generateAuthUrl({
          access_type: 'offline',
          scope: scopes.join(' '),
        });
        // Start the HTTP server to listen for the callback.
        const server = http
          .createServer(async (req, res) => {
            try {
              const qs = new url.URL(req.url, 'http://localhost:3000').searchParams;
              res.end('Authentication successful! Please return to the console.');
              server.destroy();
              const { tokens } = await oauth2Client.getToken(qs.get('code'));
              oauth2Client.credentials = tokens;
              resolve(oauth2Client);
            } catch (e) {
              reject(e);
            }
          })
          .listen(3000, () => {
            // Open the browser to the authorize URL to start the workflow.
            opn(authorizeUrl, { wait: false }).then(cp => cp.unref());
          });
        destroyer(server);
      });
    }
    
    /**
     * Authenticates with Chat API via user credentials, then creates a Chat space.
     */
    async function createSpace() {
      // Create the Chat API client and authenticate with the authorized user.
      const chatClient = await chat.chat({
        version: 'v1',
        auth: oauth2Client
      });
    
      // Call the Chat API to create a space.
      const result = await chatClient.spaces.create({
    
        // Details about the space to create.
        requestBody: {
    
          // To create a named space, set spaceType to SPACE.
          'spaceType': 'SPACE',
    
          // The user-visible name of the space.
          'displayName': 'API-made'
    
        }
    
      });
      return result;
    }
    
    // Authenticate the user, execute the function,
    // then print details about the created space.
    authenticate(scopes)
      .then(createSpace)
      .then(console.log);
    

اسکریپت برنامه ها

  1. در ویرایشگر Apps Script، فایل appsscript.json را ویرایش کنید و محدوده OAuth لازم برای فراخوانی API را اضافه کنید:

      "oauthScopes": [
        "https://www.googleapis.com/auth/chat.spaces.create"
      ]
    
  2. کد زیر را در فایلی به نام ChatSpaceCreateNamed.gs در پروژه Apps Script خود ذخیره کنید:

    /**
     * Authenticates with Chat API via user credentials, then creates a
     * Chat space.
     */
    function createSpace() {
      try {
        // Details about the space to create.
        // To create a named space, set spaceType to SPACE.
        // The user-visible name of the space is displayName.
        const space = {'displayName': 'API-made', 'spaceType': 'SPACE'};
    
        // Call Chat API with user credentials to create the space.
        const result = Chat.Spaces.create(space);
    
        // Log details about the created space.
        console.log(result);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create space with error %s', err.message);
      }
    }
    

مرحله 5: نمونه اسکریپت را اجرا کنید

برای اجرای مثال، از خط فرمان، به دایرکتوری که فایل های پروژه شما را نگه می دارد بروید، سپس دستور زیر را اجرا کنید:

جاوا

mvn compile assembly:single
java -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar

پایتون

python3 chat_space_create_named.py

Node.js

node chat_space_create_named.js

اسکریپت برنامه ها

فایل ChatSpaceCreateNamed.gs را در Apps Script Editor باز کنید و روی Run کلیک کنید.

مرورگری باز می‌شود و از شما می‌خواهد به حساب Google خود وارد شوید:

ورود به سیستم برای مجوز دادن به یک برنامه چت.

شکل 2. صفحه رضایت OAuth که در آن انتخاب می کنید کدام حساب برنامه را تأیید اعتبار کند.

پس از ورود به سیستم، صفحه رضایت OAuth ظاهر می شود و از شما می خواهد که به برنامه اجازه دهید.

پس از اعطای مجوز، اسکریپت Chat API را فراخوانی می‌کند که با ایجاد فضای چت با نام نمایشی API-made پاسخ می‌دهد. کنسول جزئیات تماس API را چاپ می کند. برای پیدا کردن فضا، به پانل Spaces در Google Chat بروید.

عیب یابی مثال

هنگام اجرای chat_space_create_named.py ، ممکن است خطایی دریافت کنید که می گوید:

Expected a JSON object with a single property for a "web" or "installed" application

این پیام خطا به این معنی است که فایل client_secrets.json که از کنسول Google Cloud دانلود کرده اید با ویژگی "web" یا "installed" شروع نمی شود. پس از احراز هویت با فایل دانلود شده، اگر کد شما رمز دسترسی را در فایل جدیدی مانند token.json ذخیره نکرد، رمز دسترسی در client_secrets.json نوشته می‌شود، که می‌تواند باعث ایجاد این خطا در طی تلاش‌های بعدی مجوز شود.

برای رفع خطا، فایل مخفی کلاینت را دوباره از کنسول Google Cloud دانلود کنید و فایل جدید را در محل فایل فعلی ذخیره کنید.

  • اگر برنامه شما نیاز به استفاده از توکن‌های کاربر خارج از محدوده یک جریان دارد، می‌تواند توکن‌ها را ذخیره کند تا بعداً دوباره از آنها استفاده کند. در این مورد، برنامه شما باید توکن های کاربر را به صورت ایمن مدیریت کند و با لغو و انقضا توکن های تازه سازی رسیدگی کند. برای اطلاعات بیشتر، راهنمای استفاده از OAuth 2.0 را ببینید.

  • با بررسی مستندات مرجع Chat API، بدانید که Chat API چه کارهای دیگری می تواند انجام دهد.