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

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

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

وقتی یک برنامه عملی را با احراز هویت کاربر انجام می‌دهد (مانند ایجاد فاصله)، گوگل چت یک پیام انتساب نمایش می‌دهد که نام برنامه‌ای را که آن عمل را برای کاربری که آن را مجاز کرده است، انجام داده است، به کاربران می‌گوید.

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

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

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

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

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

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

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

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

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

پیش‌نیازها

جاوا

پایتون

نود جی اس

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

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

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

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

  1. در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > برندسازی .

    به بخش برندسازی بروید

  2. اگر قبلاً تنظیمات را انجام داده‌ایدGoogle Auth platformمی‌توانید تنظیمات صفحه رضایت OAuth زیر را در Branding ، Audience و Data Access پیکربندی کنید. اگر پیامی با این مضمون مشاهده کردید Google Auth platform هنوز پیکربندی نشده است ، روی شروع کار کلیک کنید:

    1. در بخش اطلاعات برنامه ، در قسمت نام برنامه ، نام برنامه را وارد کنید.
    2. در ایمیل پشتیبانی کاربر ، یک آدرس ایمیل پشتیبانی انتخاب کنید که کاربران در صورت داشتن هرگونه سوال در مورد رضایت خود بتوانند با شما تماس بگیرند.
    3. روی بعدی کلیک کنید.
    4. در قسمت مخاطبان ، گزینه داخلی (Internal) را انتخاب کنید. اگر نمی‌توانید داخلی (Internal) را انتخاب کنید، خارجی (External) را انتخاب کنید.
    5. روی بعدی کلیک کنید.
    6. در قسمت اطلاعات تماس ، یک آدرس ایمیل وارد کنید که از طریق آن بتوانید از هرگونه تغییر در پروژه خود مطلع شوید.
    7. روی بعدی کلیک کنید.
    8. در قسمت Finish ، سیاست داده‌های کاربر سرویس‌های API گوگل را مرور کنید و در صورت موافقت، گزینه «من با سیاست‌های داده‌های کاربر سرویس‌های API گوگل موافقم» را انتخاب کنید.
    9. روی ادامه کلیک کنید.
    10. روی ایجاد کلیک کنید.
    11. اگر نوع کاربر را External انتخاب کرده‌اید، کاربران آزمایشی را اضافه کنید:
      1. روی مخاطب کلیک کنید.
      2. در قسمت کاربران آزمایشی ، روی افزودن کاربران کلیک کنید.
      3. آدرس ایمیل خود و سایر کاربران آزمایشی مجاز را وارد کنید، سپس روی ذخیره کلیک کنید.
  3. روی دسترسی به داده‌ها > افزودن یا حذف محدوده‌ها کلیک کنید. یک پنل با لیستی از محدوده‌ها برای هر API که در پروژه Google Cloud خود فعال کرده‌اید، ظاهر می‌شود.

    1. در قسمت «افزودن دستی دامنه‌ها» ، آدرس https://www.googleapis.com/auth/chat.spaces.create را که برای اجرای مثال احراز هویت در این راهنما لازم است، وارد کنید. برای بررسی دامنه‌های موجود برای Chat API، به بخش «محدوده‌های Chat API» در مرور کلی احراز هویت مراجعه کنید.
    2. روی افزودن به جدول کلیک کنید.
    3. روی به‌روزرسانی کلیک کنید.
    4. پس از انتخاب محدوده‌های مورد نیاز برنامه، در صفحه دسترسی به داده‌ها ، روی ذخیره کلیک کنید.

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

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

ایجاد اعتبارنامه‌های شناسه کلاینت OAuth

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

برنامه وب

  1. در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .

    به بخش مشتریان بروید

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

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

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

اندروید

  1. در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .

    به بخش مشتریان بروید

  2. روی ایجاد کلاینت کلیک کنید.
  3. روی نوع برنامه > اندروید کلیک کنید.
  4. در فیلد «نام»، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده می‌شود.
  5. در فیلد "Package name"، نام بسته را از فایل AndroidManifest.xml خود وارد کنید.
  6. در فیلد «اثر انگشت گواهی SHA-1»، اثر انگشت گواهی SHA-1 تولید شده خود را وارد کنید.
  7. روی ایجاد کلیک کنید.

    اعتبارنامه‌ی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر می‌شود.

آی‌او‌اس

  1. در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .

    به بخش مشتریان بروید

  2. روی ایجاد کلاینت کلیک کنید.
  3. روی نوع برنامه > iOS کلیک کنید.
  4. در فیلد «نام»، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده می‌شود.
  5. در فیلد «شناسه بسته»، شناسه بسته را مطابق با آنچه در فایل Info.plist برنامه ذکر شده است، وارد کنید.
  6. اختیاری: اگر برنامه شما در فروشگاه اپل اپ استور (Apple App Store) نمایش داده می‌شود، شناسه فروشگاه اپ (App Store ID) را وارد کنید.
  7. اختیاری: در فیلد «شناسه تیم»، رشته ۱۰ کاراکتری منحصر به فردی را که توسط اپل تولید شده و به تیم شما اختصاص داده شده است، وارد کنید.
  8. روی ایجاد کلیک کنید.

    اعتبارنامه‌ی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر می‌شود.

برنامه کروم

  1. در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .

    به بخش مشتریان بروید

  2. روی ایجاد کلاینت کلیک کنید.
  3. روی نوع برنامه > افزونه کروم کلیک کنید.
  4. در فیلد «نام»، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده می‌شود.
  5. در فیلد «شناسه کالا»، رشته شناسه ۳۲ کاراکتری منحصر به فرد برنامه خود را وارد کنید. می‌توانید این مقدار شناسه را در نشانی اینترنتی فروشگاه وب کروم برنامه خود و در داشبورد توسعه‌دهندگان فروشگاه وب کروم پیدا کنید.
  6. روی ایجاد کلیک کنید.

    اعتبارنامه‌ی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر می‌شود.

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

  1. در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .

    به بخش مشتریان بروید

  2. روی ایجاد کلاینت کلیک کنید.
  3. روی نوع برنامه > برنامه دسکتاپ کلیک کنید.
  4. در فیلد نام ، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده می‌شود.
  5. روی ایجاد کلیک کنید.

    اعتبارنامه‌ی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر می‌شود.

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

  1. در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .

    به بخش مشتریان بروید

  2. روی ایجاد کلاینت کلیک کنید.
  3. روی نوع برنامه > تلویزیون‌ها و دستگاه‌های ورودی محدود کلیک کنید.
  4. در فیلد «نام»، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده می‌شود.
  5. روی ایجاد کلیک کنید.

    اعتبارنامه‌ی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر می‌شود.

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

  1. در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .

    به بخش مشتریان بروید

  2. روی ایجاد کلاینت کلیک کنید.
  3. روی نوع برنامه > پلتفرم جهانی ویندوز (UWP) کلیک کنید.
  4. در فیلد «نام»، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده می‌شود.
  5. در فیلد «شناسه فروشگاه»، مقدار منحصر به فرد ۱۲ کاراکتری شناسه فروشگاه مایکروسافت برنامه خود را وارد کنید. می‌توانید این شناسه را در آدرس اینترنتی فروشگاه مایکروسافت برنامه خود و در مرکز شرکا پیدا کنید.
  6. روی ایجاد کلیک کنید.

    اعتبارنامه‌ی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر می‌شود.

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

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

  1. در کنسول گوگل کلود، به Menu > APIs & Services > Credentials بروید.

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

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

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

  4. فایل را با نام credentials.json ذخیره کنید.

مرحله ۳: نصب کتابخانه کلاینت گوگل و سایر وابستگی‌ها

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

جاوا

برای افزودن کتابخانه‌های کلاینت گوگل و سایر وابستگی‌های مورد نیاز به پروژه 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>

پایتون

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

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

نود جی اس

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

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

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

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

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

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

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

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

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

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

نمونه‌های کد زیر در جاوا، پایتون و 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 = "/credentials.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("/credentials.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. فایل credentials.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 در همان دایرکتوری که credentials.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(
                        'credentials.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()
    

نود جی اس

  1. کد زیر را در فایلی با نام chat_space_create_named.js در همان دایرکتوری که پروژه Node.js و credentials.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('./credentials.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);
      }
    }
    

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

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

جاوا

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

پایتون

python3 chat_space_create_named.py

نود جی اس

node chat_space_create_named.js

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

فایل ChatSpaceCreateNamed.gs را در ویرایشگر اسکریپت برنامه‌ها باز کنید و روی Run کلیک کنید.

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

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

شکل ۲. صفحه رضایت 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

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

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

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

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