این راهنما نحوه استفاده از OAuth 2.0 با استفاده از اعتبارنامههای گوگل کاربران برای دسترسی به Chat API را توضیح میدهد. احراز هویت و مجوزدهی با اعتبارنامههای کاربر به برنامههای چت اجازه میدهد تا به دادههای کاربر دسترسی داشته باشند و عملیات را از طرف کاربر احراز هویت شده انجام دهند. با احراز هویت از طرف کاربر، برنامه مجوزهای مشابه آن کاربر را دارد و میتواند اقداماتی را انجام دهد که گویی توسط آن کاربر انجام شده است.
پس از احراز هویت و مجوزدهی یک فراخوانی API با اطلاعات کاربری، برنامههای چت میتوانند موارد زیر را انجام دهند:
- ایجاد فضاهای چت
- کاربران را به فضاهای چت و مکالمات گروهی اضافه کنید.
- با دادههای کاربر در سایر APIهای Workspace مانند موارد زیر کار کنید:
- ایجاد رویدادها در تقویم گوگل
- موارد را در Google Sheets ثبت کنید .
- با جیمیل ایمیل بفرستید .
وقتی یک برنامه عملی را با احراز هویت کاربر انجام میدهد (مانند ایجاد فاصله)، گوگل چت یک پیام انتساب نمایش میدهد که نام برنامهای را که آن عمل را برای کاربری که آن را مجاز کرده است، انجام داده است، به کاربران میگوید.


برای کسب اطلاعات بیشتر در مورد اینکه چه زمانی برنامههای چت نیاز به احراز هویت دارند و از چه نوع احراز هویتی باید استفاده کنند، به انواع احراز هویت مورد نیاز در نمای کلی احراز هویت و مجوز API چت مراجعه کنید.
به عنوان مدیر Google Workspace احراز هویت و مجوز دهید
این بخش توضیح میدهد که چگونه مدیران فضای کاری Google Workspace میتوانند برنامهها و فضاهای Google Chat را در سراسر سازمان خود با احراز هویت کاربر مدیریت کنند.
احراز هویت و مجوزدهی با استفاده از نمایندگی در سطح دامنه
اگر شما مدیر دامنه هستید، میتوانید بدون نیاز به رضایت تک تک کاربران، به حساب کاربری سرویس یک برنامه ، تفویض اختیار در سطح دامنه اعطا کنید تا به دادههای کاربران شما دسترسی داشته باشد. پس از پیکربندی تفویض اختیار در سطح دامنه، حساب کاربری سرویس میتواند خود را به جای یک حساب کاربری جا بزند . اگرچه یک حساب کاربری سرویس برای احراز هویت استفاده میشود، تفویض اختیار در سطح دامنه، خود را به جای یک کاربر جا میزند و بنابراین احراز هویت کاربر محسوب میشود. برای هر عملکردی که نیاز به احراز هویت کاربر داشته باشد، میتوانید از تفویض اختیار در سطح دامنه استفاده کنید.
با استفاده از امتیازات مدیر، احراز هویت و مجوز دهید
اگر شما مدیر دامنه یا مدیری با اختیارات مدیر هستید، میتوانید با تنظیم فیلد useAdminAccess در درخواستهای متدهای مربوطه، تماسهای خود را با API چت گوگل با اختیارات مدیر تأیید و مجاز کنید. برای اطلاعات بیشتر، به مستندات مرجع API مراجعه کنید.
توجه داشته باشید که وقتی یک برنامه چت گوگل عملی را با امتیازات مدیر انجام میدهد، چت نام برنامه چتی که آن عمل را انجام داده یا نام مدیری که آن را مجاز کرده است را به کاربران نمیگوید، بلکه فقط به کاربران میگوید که این عمل توسط مدیر سازمان آنها انجام شده است.
پیشنیازها
جاوا
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- یک پروژه گوگل کلود ایجاد کنید .
- API چت گوگل را با نام، آیکون و توضیحات برای برنامه چت خود فعال و پیکربندی کنید .
- JDK 1.7 یا بالاتر
- ابزار مدیریت بسته Maven
- یک پروژه Maven مقداردهی اولیه شده. برای مقداردهی اولیه یک پروژه جدید، دستور زیر را در رابط خط فرمان خود اجرا کنید:
mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
پایتون
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- یک پروژه گوگل کلود ایجاد کنید .
- API چت گوگل را با نام، آیکون و توضیحات برای برنامه چت خود فعال و پیکربندی کنید .
- پایتون ۳.۶ یا بالاتر
- ابزار مدیریت بسته pip
نود جی اس
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- یک پروژه گوگل کلود ایجاد کنید .
- API چت گوگل را با نام، آیکون و توضیحات برای برنامه چت خود فعال و پیکربندی کنید .
- Node.js نسخه ۱۴ یا بالاتر
- ابزار مدیریت بسته npm
- یک پروژه Node.js مقداردهی اولیه شده. برای مقداردهی اولیه یک پروژه جدید، یک پوشه جدید ایجاد کرده و به آن بروید، سپس دستور زیر را در رابط خط فرمان خود اجرا کنید:
npm init
اسکریپت برنامهها
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- یک پروژه گوگل کلود ایجاد کنید .
- API چت گوگل را با نام، آیکون و توضیحات برای برنامه چت خود فعال و پیکربندی کنید .
- یک پروژه مستقل Apps Script ایجاد کنید و سرویس چت پیشرفته (Advanced Chat Service) را فعال کنید.
مرحله ۱: صفحه رضایت OAuth را پیکربندی کنید، محدودهها را مشخص کنید و برنامه خود را ثبت کنید
وقتی از OAuth 2.0 برای مجوزدهی استفاده میکنید، گوگل یک صفحه رضایتنامه به کاربر نمایش میدهد که شامل خلاصهای از پروژه شما، سیاستهای آن و محدودههای درخواستی مجوز است. پیکربندی صفحه رضایتنامه OAuth برنامه شما، آنچه گوگل به کاربران و بررسیکنندگان برنامه نمایش میدهد را تعریف میکند و برنامه شما را ثبت میکند تا بتوانید بعداً آن را منتشر کنید.
همه برنامههایی که از OAuth 2.0 استفاده میکنند، به پیکربندی صفحه رضایت نیاز دارند، اما شما فقط باید محدوده برنامههایی را که توسط افراد خارج از سازمان Google Workspace شما استفاده میشوند، فهرست کنید.
در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > برندسازی .
اگر قبلاً تنظیمات را انجام دادهایدGoogle Auth platformمیتوانید تنظیمات صفحه رضایت OAuth زیر را در Branding ، Audience و Data Access پیکربندی کنید. اگر پیامی با این مضمون مشاهده کردید Google Auth platform هنوز پیکربندی نشده است ، روی شروع کار کلیک کنید:
- در بخش اطلاعات برنامه ، در قسمت نام برنامه ، نام برنامه را وارد کنید.
- در ایمیل پشتیبانی کاربر ، یک آدرس ایمیل پشتیبانی انتخاب کنید که کاربران در صورت داشتن هرگونه سوال در مورد رضایت خود بتوانند با شما تماس بگیرند.
- روی بعدی کلیک کنید.
- در قسمت مخاطبان ، گزینه داخلی (Internal) را انتخاب کنید. اگر نمیتوانید داخلی (Internal) را انتخاب کنید، خارجی (External) را انتخاب کنید.
- روی بعدی کلیک کنید.
- در قسمت اطلاعات تماس ، یک آدرس ایمیل وارد کنید که از طریق آن بتوانید از هرگونه تغییر در پروژه خود مطلع شوید.
- روی بعدی کلیک کنید.
- در قسمت Finish ، سیاست دادههای کاربر سرویسهای API گوگل را مرور کنید و در صورت موافقت، گزینه «من با سیاستهای دادههای کاربر سرویسهای API گوگل موافقم» را انتخاب کنید.
- روی ادامه کلیک کنید.
- روی ایجاد کلیک کنید.
- اگر نوع کاربر را External انتخاب کردهاید، کاربران آزمایشی را اضافه کنید:
- روی مخاطب کلیک کنید.
- در قسمت کاربران آزمایشی ، روی افزودن کاربران کلیک کنید.
- آدرس ایمیل خود و سایر کاربران آزمایشی مجاز را وارد کنید، سپس روی ذخیره کلیک کنید.
روی دسترسی به دادهها > افزودن یا حذف محدودهها کلیک کنید. یک پنل با لیستی از محدودهها برای هر API که در پروژه Google Cloud خود فعال کردهاید، ظاهر میشود.
- در قسمت «افزودن دستی دامنهها» ، آدرس
https://www.googleapis.com/auth/chat.spaces.createرا که برای اجرای مثال احراز هویت در این راهنما لازم است، وارد کنید. برای بررسی دامنههای موجود برای Chat API، به بخش «محدودههای Chat API» در مرور کلی احراز هویت مراجعه کنید. - روی افزودن به جدول کلیک کنید.
- روی بهروزرسانی کلیک کنید.
- پس از انتخاب محدودههای مورد نیاز برنامه، در صفحه دسترسی به دادهها ، روی ذخیره کلیک کنید.
- در قسمت «افزودن دستی دامنهها» ، آدرس
مرحله ۲: ایجاد اعتبارنامههای شناسه کلاینت OAuth در کنسول Google Cloud
برای احراز هویت به عنوان کاربر نهایی و دسترسی به دادههای کاربر در برنامه خود، باید یک یا چند شناسه کلاینت OAuth 2.0 ایجاد کنید. شناسه کلاینت برای شناسایی یک برنامه واحد به سرورهای OAuth گوگل استفاده میشود. اگر برنامه شما روی چندین پلتفرم - مانند اندروید، iOS و وب - اجرا میشود، باید برای هر پلتفرم یک شناسه کلاینت جداگانه ایجاد کنید.
ایجاد اعتبارنامههای شناسه کلاینت OAuth
برای دستورالعملهای خاص در مورد نحوه ایجاد شناسه کلاینت OAuth ، نوع برنامه خود را انتخاب کنید:
برنامه وب
- در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .
- روی ایجاد کلاینت کلیک کنید.
- روی نوع برنامه > برنامه وب کلیک کنید.
- در فیلد نام ، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده میشود.
- URI های مجاز مربوط به برنامه خود را اضافه کنید:
- برنامههای سمت کلاینت (جاوااسکریپت) – در قسمت Authorized JavaScript origins ، روی Add URI کلیک کنید. سپس، یک URI برای استفاده در درخواستهای مرورگر وارد کنید. این دامنههایی را که برنامه شما میتواند از آنها درخواستهای API را به سرور OAuth 2.0 ارسال کند، مشخص میکند.
- برنامههای سمت سرور (جاوا، پایتون و موارد دیگر) – در زیر Authorized redirect URIs ، روی Add URI کلیک کنید. سپس، یک URI نقطه پایانی که سرور OAuth 2.0 میتواند به آن پاسخ ارسال کند را وارد کنید.
- روی ایجاد کلیک کنید.
اعتبارنامهی تازه ایجاد شده در زیر شناسههای کلاینت OAuth 2.0 ظاهر میشود.
به شناسه کلاینت توجه کنید. از رمزهای کلاینت برای برنامههای وب استفاده نمیشود.
اندروید
- در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .
- روی ایجاد کلاینت کلیک کنید.
- روی نوع برنامه > اندروید کلیک کنید.
- در فیلد «نام»، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده میشود.
- در فیلد "Package name"، نام بسته را از فایل
AndroidManifest.xmlخود وارد کنید. - در فیلد «اثر انگشت گواهی SHA-1»، اثر انگشت گواهی SHA-1 تولید شده خود را وارد کنید.
- روی ایجاد کلیک کنید.
اعتبارنامهی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر میشود.
آیاواس
- در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .
- روی ایجاد کلاینت کلیک کنید.
- روی نوع برنامه > iOS کلیک کنید.
- در فیلد «نام»، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده میشود.
- در فیلد «شناسه بسته»، شناسه بسته را مطابق با آنچه در فایل
Info.plistبرنامه ذکر شده است، وارد کنید. - اختیاری: اگر برنامه شما در فروشگاه اپل اپ استور (Apple App Store) نمایش داده میشود، شناسه فروشگاه اپ (App Store ID) را وارد کنید.
- اختیاری: در فیلد «شناسه تیم»، رشته ۱۰ کاراکتری منحصر به فردی را که توسط اپل تولید شده و به تیم شما اختصاص داده شده است، وارد کنید.
- روی ایجاد کلیک کنید.
اعتبارنامهی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر میشود.
برنامه کروم
- در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .
- روی ایجاد کلاینت کلیک کنید.
- روی نوع برنامه > افزونه کروم کلیک کنید.
- در فیلد «نام»، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده میشود.
- در فیلد «شناسه کالا»، رشته شناسه ۳۲ کاراکتری منحصر به فرد برنامه خود را وارد کنید. میتوانید این مقدار شناسه را در نشانی اینترنتی فروشگاه وب کروم برنامه خود و در داشبورد توسعهدهندگان فروشگاه وب کروم پیدا کنید.
- روی ایجاد کلیک کنید.
اعتبارنامهی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر میشود.
برنامه دسکتاپ
- در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .
- روی ایجاد کلاینت کلیک کنید.
- روی نوع برنامه > برنامه دسکتاپ کلیک کنید.
- در فیلد نام ، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده میشود.
- روی ایجاد کلیک کنید.
اعتبارنامهی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر میشود.
تلویزیونها و دستگاههای ورودی محدود
- در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .
- روی ایجاد کلاینت کلیک کنید.
- روی نوع برنامه > تلویزیونها و دستگاههای ورودی محدود کلیک کنید.
- در فیلد «نام»، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده میشود.
- روی ایجاد کلیک کنید.
اعتبارنامهی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر میشود.
پلتفرم جهانی ویندوز (UWP)
- در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > مشتریان .
- روی ایجاد کلاینت کلیک کنید.
- روی نوع برنامه > پلتفرم جهانی ویندوز (UWP) کلیک کنید.
- در فیلد «نام»، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده میشود.
- در فیلد «شناسه فروشگاه»، مقدار منحصر به فرد ۱۲ کاراکتری شناسه فروشگاه مایکروسافت برنامه خود را وارد کنید. میتوانید این شناسه را در آدرس اینترنتی فروشگاه مایکروسافت برنامه خود و در مرکز شرکا پیدا کنید.
- روی ایجاد کلیک کنید.
اعتبارنامهی تازه ایجاد شده در زیر «OAuth 2.0 Client IDs» ظاهر میشود.
فایل JSON مخفی کلاینت را دانلود کنید
فایل مخفی کلاینت، یک نمایش JSON از اعتبارنامههای شناسه کلاینت OAuth است که برنامه چت شما میتواند هنگام ارائه اعتبارنامهها به آن ارجاع دهد.
در کنسول گوگل کلود، به Menu > APIs & Services > Credentials بروید.
در زیر شناسههای کلاینت OAuth 2.0 ، روی شناسه کلاینتی که ایجاد کردهاید کلیک کنید.
روی دانلود JSON کلیک کنید.
فایل را با نام
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 خود:
- در سمت چپ، روی ویرایشگر کلیک کنید.
- در سمت چپ، کنار سرویسها ، روی سرویس کلیک کنید.
- API چت گوگل را انتخاب کنید.
- در قسمت نسخه ، نسخه ۱ را انتخاب کنید.
- روی افزودن کلیک کنید.
شما میتوانید از هر زبانی که توسط کتابخانههای کلاینت ما پشتیبانی میشود، استفاده کنید.
مرحله ۴: اسکریپتی بنویسید که Chat API را فراخوانی کند
فراخوانی یک API با مجوز OAuth یک فرآیند چند مرحلهای است. در برنامههای وب یا دسکتاپ، این فرآیند معمولاً به شرح زیر است:
- این برنامه کاربر را به یک صفحه مجوز هدایت میکند که درخواست دسترسی به دادههای کاربر مشخص شده توسط حوزههای مجوز را دارد. برنامه خود را با اعتبارنامههای شناسه کلاینت شناسایی میکند.
- کاربر مجوزهای درخواستی برنامه را بررسی کرده و درخواست را تأیید میکند.
- سرور احراز هویت گوگل، مرورگر را به همراه یک کد مجوز به نقطه پایانی HTTP برنامه هدایت میکند.
- برنامه درخواست دیگری را به سرور مجوز گوگل ارسال میکند تا کد مجوز را با یک توکن دسترسی مبادله کند.
- برنامه از توکن دسترسی برای فراخوانی API از طرف کاربر استفاده میکند.
برای کسب اطلاعات بیشتر در مورد فرآیند مجوز OAuth، به راهنمای استفاده از OAuth 2.0 برای دسترسی به APIهای گوگل مراجعه کنید.
نمونههای کد زیر در جاوا، پایتون و Node.js از یک کتابخانه کلاینت برای اجرای جریان مجوز OAuth استفاده میکنند. این کتابخانه یک سرور HTTP محلی را باز میکند تا کد مجوز را از سرور مجوز دریافت کند و سپس آن را با یک توکن دسترسی مبادله کند. در نمونه کد Apps Script، این جریان مجوز توسط Apps Script مدیریت میشود.
پس از تکمیل جریان احراز هویت، اسکریپت با استفاده از توکن دسترسی کاربر، با Chat API احراز هویت میشود و سپس یک فاصله ایجاد میکند.
جاوا
- در دایرکتوری پروژه خود، فایل
src/main/java/com/google/chat/app/authsample/App.javaرا باز کنید. محتویات
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(); } }یک زیرشاخه جدید به نام
resourcesدر پوشه پروژه خود ایجاد کنید.فایل
credentials.jsonرا در زیرشاخهresourcesکپی کنید.برای پیکربندی Maven جهت گنجاندن فایل اسرار کلاینت در بسته پروژه، فایل
pom.xmlرا در دایرکتوری پروژه خود ویرایش کرده و پیکربندی زیر را به بخش<build>اضافه کنید:<build> <!-- ... existing configurations ... --> <resources> <resource> <directory>resources</directory> </resource> </resources> </build>برای پیکربندی 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>
پایتون
کد زیر را در فایلی با نام
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()
نود جی اس
کد زیر را در فایلی با نام
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);
اسکریپت برنامهها
در ویرایشگر Apps Script، فایل
appsscript.jsonرا ویرایش کنید و محدوده OAuth لازم برای فراخوانی API را اضافه کنید:"oauthScopes": [ "https://www.googleapis.com/auth/chat.spaces.create" ]کد زیر را در فایلی با نام
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:singlejava -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 ظاهر میشود و از شما میخواهد که به برنامه اجازه دسترسی بدهید.
پس از اعطای مجوز، اسکریپت، 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 و نمونه برنامه مجوزدهی کاربر مراجعه کنید:
- نمونه برنامه مجوز کاربر جاوا
- نمونه برنامه مجوزدهی کاربر پایتون
- نمونه برنامه احراز هویت کاربر Node.js
- ادغام Apps Script با Google Chat به طور خودکار توکنهای کاربر را مدیریت میکند. برای اطلاعات بیشتر، به سرویس چت پیشرفته مراجعه کنید. اگر محدودههای OAuth مورد نیاز را برای یک برنامه چت تعاملی به فایل
appsscript.jsonاضافه کنید، ادغام Apps Script به طور خودکار توکنهای کاربر را به صورت ایمن و شفاف ذخیره میکند و دفعه بعد که اسکریپت API چت را برای همان کاربر فراخوانی میکند، از آنها دوباره استفاده میکند.
با بررسی مستندات مرجع Chat API، بیاموزید که Chat API چه کارهای دیگری میتواند انجام دهد.