به عنوان یک کاربر گپ 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 چه کارهای دیگری می تواند انجام دهد.

،

این راهنما نحوه استفاده از 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 چه کارهای دیگری می تواند انجام دهد.

،

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

پس از تأیید و مجوز تماس API با اعتبار کاربر ، برنامه های گپ می توانند موارد زیر را انجام دهند:

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

برنامه Google Chat فضایی را برای کاربر ایجاد می کند.
شکل 1 . پیام انتصابی که Google Chat هنگام نمایش یک برنامه چت به نمایندگی از کاربر ایجاد می کند.

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

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

در این بخش توضیح داده شده است که چگونه سرپرستان فضای کاری Google می توانند برنامه ها و فضاهای گپ Google را با تأیید هویت کاربر مدیریت کنند.

با استفاده از نمایندگان گسترده دامنه تأیید و مجوز دهید

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

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

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

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

پیش نیازها

جاوا

پایتون

Node.js

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

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

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

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

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

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

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

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

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

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

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

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

اعتبار شناسه مشتری OAUTH ایجاد کنید

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

برنامه وب

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

    به اعتبارنامه بروید

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

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

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

اندروید

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

    به اعتبارنامه بروید

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

iOS

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

    به اعتبارنامه بروید

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

برنامه کروم

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

    به اعتبارنامه بروید

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

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

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

    به اعتبارنامه بروید

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

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

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

    به اعتبارنامه بروید

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

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

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

    به اعتبارنامه بروید

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

فایل JSON راز مشتری را بارگیری کنید

پرونده مخفی مشتری یک نمایندگی JSON از اعتبارنامه شناسه مشتری OAUTH است که برنامه چت شما می تواند هنگام ارائه اعتبارنامه به آن مراجعه کند.

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

    به اعتبارنامه بروید

  2. تحت شناسه مشتری OAUTH 2.0 ، روی شناسه مشتری که ایجاد کرده اید کلیک کنید.

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

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

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

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

جاوا

برای افزودن کتابخانه های مشتری 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 Client را برای Python نصب نکرده اید ، دستور زیر را در رابط خط فرمان خود اجرا کنید:

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

Node.js

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

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

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

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

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

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

مرحله 4: یک اسکریپت بنویسید که به API چت تماس می گیرد

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

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

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

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

پس از اتمام جریان تأیید اعتبار ، اسکریپت با استفاده از نشانه دسترسی کاربر با 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 ، File appsscript.json را ویرایش کرده و دامنه OAuth لازم را برای تماس با API اضافه کنید:

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

    /**
     * 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 را در ویرایشگر اسکریپت برنامه ها باز کنید و روی Run کلیک کنید.

یک مرورگر باز می شود و شما را وادار می کند تا وارد حساب Google خود شوید:

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

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

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

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

عیب یابی مثال

هنگام اجرای 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 مراجعه کنید.

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