Google Chat उपयोगकर्ता के तौर पर पुष्टि करना और अनुमति देना

इस गाइड में, उपयोगकर्ताओं के Google क्रेडेंशियल के साथ OAuth 2.0 का इस्तेमाल करके, Chat API को ऐक्सेस करने का तरीका बताया गया है. उपयोगकर्ता के क्रेडेंशियल की मदद से पुष्टि करने और अनुमति देने पर, Chat ऐप्लिकेशन उपयोगकर्ता का डेटा ऐक्सेस कर सकते हैं. साथ ही, पुष्टि किए गए उपयोगकर्ता की ओर से कार्रवाइयां कर सकते हैं. किसी उपयोगकर्ता की ओर से पुष्टि करने पर, ऐप्लिकेशन के पास उस उपयोगकर्ता जैसी ही अनुमतियां होती हैं. साथ ही, वह ऐसी कार्रवाइयां कर सकता है जैसे कि वे उस उपयोगकर्ता ने की हों.

उपयोगकर्ता के क्रेडेंशियल की मदद से एपीआई कॉल की पुष्टि करने और अनुमति देने के बाद, चैट ऐप्लिकेशन ये काम कर सकते हैं:

  • Chat स्पेस बनाएं.
  • Chat के स्पेस और ग्रुप बातचीत में उपयोगकर्ताओं को जोड़ना.
  • Workspace के अन्य एपीआई में उपयोगकर्ता के डेटा के साथ काम करना. जैसे:

जब कोई ऐप्लिकेशन, उपयोगकर्ता की पुष्टि के साथ कोई कार्रवाई करता है, जैसे कि स्पेस बनाना, तो Google Chat एक एट्रिब्यूशन मैसेज दिखाता है. इस मैसेज से, उपयोगकर्ताओं को उस ऐप्लिकेशन का नाम पता चलता है जिसने अनुमति देने वाले उपयोगकर्ता के लिए कार्रवाई की है.

Google Chat ऐप्लिकेशन, उपयोगकर्ता के लिए स्पेस बनाता है.
पहली इमेज. एट्रिब्यूशन मैसेज, जो Google Chat तब दिखाता है, जब कोई Chat ऐप्लिकेशन किसी उपयोगकर्ता की ओर से स्पेस बनाता है.

Chat ऐप्लिकेशन को कब पुष्टि करने की ज़रूरत होती है और किस तरह की पुष्टि करनी होती है, इस बारे में ज़्यादा जानने के लिए, Chat API की पुष्टि और अनुमति की खास जानकारी में पुष्टि करने के ज़रूरी तरीके देखें.

Google Workspace एडमिन के तौर पर पुष्टि करें और अनुमति दें

इस सेक्शन में बताया गया है कि Google Workspace के एडमिन, अपने संगठन में उपयोगकर्ता की पुष्टि करके, Google Chat ऐप्लिकेशन और स्पेस को कैसे मैनेज कर सकते हैं.

पूरे डोमेन के लिए, डेटा का ऐक्सेस देने की सुविधा का इस्तेमाल करके पुष्टि करना और अनुमति देना

अगर आप डोमेन एडमिन हैं, तो आपके पास डोमेन के लिए अनुमति देने का अधिकार देने का विकल्प होता है. इससे, किसी ऐप्लिकेशन के सर्विस खाते को आपके उपयोगकर्ताओं का डेटा ऐक्सेस करने की अनुमति दी जा सकती है. इसके लिए, हर उपयोगकर्ता से सहमति लेने की ज़रूरत नहीं होती. डोमेन के लिए, ऐक्सेस देने की सुविधा कॉन्फ़िगर करने के बाद, सेवा खाता किसी उपयोगकर्ता खाते के नाम पर काम कर सकता है. पुष्टि करने के लिए सेवा खाते का इस्तेमाल किया जाता है. हालांकि, डोमेन के लिए अधिकार देने की सुविधा, किसी उपयोगकर्ता के नाम पर काम करती है. इसलिए, इसे उपयोगकर्ता की पुष्टि माना जाता है. डोमेन के लिए डेलिगेशन की सुविधा का इस्तेमाल करके, ऐसी किसी भी सुविधा का ऐक्सेस दिया जा सकता है जिसके लिए उपयोगकर्ता की पुष्टि ज़रूरी है.

एडमिन के अधिकारों का इस्तेमाल करके पुष्टि करना और अनुमति देना

अगर आप डोमेन एडमिन हैं या ऐसे एडमिन हैं जिसे एडमिन के अधिकारों का ऐक्सेस दिया गया है, तो आपके पास Google Chat API में अपने कॉल की पुष्टि करने और अनुमति देने का विकल्प होता है. इसके लिए, आपको उन तरीकों के अनुरोध में useAdminAccess फ़ील्ड को सेट करना होगा जिन पर एडमिन के अधिकार मिलते हैं. ज़्यादा जानकारी के लिए, एपीआई का रेफ़रंस दस्तावेज़ देखें.

ध्यान दें कि जब कोई Google Chat ऐप्लिकेशन, एडमिन के लेवल के ऐक्सेस का इस्तेमाल करके कोई कार्रवाई करता है, तो Chat उपयोगकर्ताओं को उस कार्रवाई को करने वाले Chat ऐप्लिकेशन या उसे अनुमति देने वाले एडमिन का नाम नहीं दिखाएगा. हालांकि, वह उपयोगकर्ताओं को यह बताएगा कि कार्रवाई उनके संगठन के एडमिन ने की है.

ज़रूरी शर्तें

Java

  • आपके पास ऐसा Business या Enterprise Google Workspace खाता होना चाहिए जिसके पास Google Chat का ऐक्सेस हो.
  • Google Cloud प्रोजेक्ट बनाएं.
  • अपने Chat ऐप्लिकेशन का नाम, आइकॉन, और जानकारी डालकर 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

Python

Node.js

Apps Script

पहला चरण: OAuth की सहमति वाली स्क्रीन को कॉन्फ़िगर करना, दायरे तय करना, और अपना ऐप्लिकेशन रजिस्टर करना

अनुमति के लिए OAuth 2.0 का इस्तेमाल करने पर, Google उपयोगकर्ता को सहमति वाली स्क्रीन दिखाता है. इसमें आपके प्रोजेक्ट, उसकी नीतियों, और अनुमति के लिए अनुरोध किए गए दायरों की खास जानकारी शामिल होती है. अपने ऐप्लिकेशन की OAuth सहमति स्क्रीन को कॉन्फ़िगर करने से यह तय होता है कि Google, उपयोगकर्ताओं और ऐप्लिकेशन की समीक्षा करने वालों को क्या दिखाता है. साथ ही, आपका ऐप्लिकेशन रजिस्टर होता है, ताकि आप उसे बाद में प्रकाशित कर सकें.

OAuth 2.0 का इस्तेमाल करने वाले सभी ऐप्लिकेशन के लिए, सहमति वाली स्क्रीन का कॉन्फ़िगरेशन ज़रूरी है. हालांकि, आपको सिर्फ़ उन ऐप्लिकेशन के लिए स्कोप की सूची बनानी होगी जिनका इस्तेमाल आपके Google Workspace संगठन से बाहर के लोग करते हैं.

  1. Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > OAuth सहमति स्क्रीन पर जाएं.

    OAuth की सहमति वाली स्क्रीन पर जाना

  2. अपने ऐप्लिकेशन के लिए उपयोगकर्ता का टाइप चुनें. इसके बाद, बनाएं पर क्लिक करें.

  3. ऐप्लिकेशन रजिस्ट्रेशन फ़ॉर्म को पूरा करें. इसके बाद, सेव करें और जारी रखें पर क्लिक करें.

  4. दायरा जोड़ें या हटाएं पर क्लिक करें. अपने ऐप्लिकेशन के लिए ज़रूरी अनुमति के दायरों को जोड़ें और उनकी पुष्टि करें. इसके बाद, अपडेट करें पर क्लिक करें. इसके बाद, सेव करें और जारी रखें पर क्लिक करें.

  5. अपने ऐप्लिकेशन रजिस्ट्रेशन की खास जानकारी देखें. बदलाव करने के लिए, बदलाव करें पर क्लिक करें या डैशबोर्ड पर वापस जाएं पर क्लिक करें.

दूसरा चरण: Google Cloud Console में OAuth क्लाइंट आईडी क्रेडेंशियल बनाना

असली उपयोगकर्ता के तौर पर पहचान की पुष्टि करने और अपने ऐप्लिकेशन में उपयोगकर्ता का डेटा ऐक्सेस करने के लिए, आपको एक या एक से ज़्यादा OAuth 2.0 क्लाइंट आईडी बनाने होंगे. क्लाइंट आईडी का इस्तेमाल, Google के OAuth सर्वर पर किसी एक ऐप्लिकेशन की पहचान करने के लिए किया जाता है. अगर आपका ऐप्लिकेशन Android, iOS, और वेब जैसे कई प्लैटफ़ॉर्म पर काम करता है, तो आपको हर प्लैटफ़ॉर्म के लिए एक अलग क्लाइंट आईडी बनाना होगा.

OAuth क्लाइंट आईडी के क्रेडेंशियल बनाएं

OAuth क्लाइंट आईडी बनाने का तरीका जानने के लिए, अपना ऐप्लिकेशन टाइप चुनें:

वेब एेप्लिकेशन

  1. Google Cloud console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.

    क्रेडेंशियल पर जाएं

  2. क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
  3. ऐप्लिकेशन का टाइप > वेब ऐप्लिकेशन पर क्लिक करें.
  4. नाम फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम लिखें. यह नाम सिर्फ़ Google Cloud Console में दिखता है.
  5. अपने ऐप्लिकेशन से जुड़े, अनुमति वाले यूआरआई जोड़ें:
    • क्लाइंट-साइड ऐप्लिकेशन (JavaScript)अनुमति वाले JavaScript ऑरिजिन में जाकर, यूआरआई जोड़ें पर क्लिक करें. इसके बाद, ब्राउज़र के अनुरोधों के लिए इस्तेमाल करने के लिए कोई यूआरआई डालें. यह उन डोमेन की पहचान करता है जिनसे आपका ऐप्लिकेशन, OAuth 2.0 सर्वर को एपीआई अनुरोध भेज सकता है.
    • सर्वर-साइड ऐप्लिकेशन (Java, Python वगैरह)अनुमति वाले रीडायरेक्ट यूआरआई में जाकर, यूआरआई जोड़ें पर क्लिक करें. इसके बाद, वह एंडपॉइंट यूआरआई डालें जिस पर OAuth 2.0 सर्वर रिस्पॉन्स भेज सकता है.
  6. बनाएं पर क्लिक करें. OAuth क्लाइंट बनने के बाद, आपको एक स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट पासवर्ड दिखेगा.

    Client-ID नोट करें. वेब ऐप्लिकेशन के लिए क्लाइंट सीक्रेट का इस्तेमाल नहीं किया जाता.

  7. ठीक है पर क्लिक करें. नया क्रेडेंशियल, OAuth 2.0 क्लाइंट आईडी में दिखता है.

Android

  1. Google Cloud console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.

    क्रेडेंशियल पर जाएं

  2. क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
  3. ऐप्लिकेशन टाइप > Android पर क्लिक करें.
  4. "नाम" फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम टाइप करें. यह नाम सिर्फ़ Google Cloud Console में दिखता है.
  5. "पैकेज का नाम" फ़ील्ड में, अपनी AndroidManifest.xml फ़ाइल से पैकेज का नाम डालें.
  6. "SHA-1 सर्टिफ़िकेट फ़िंगरप्रिंट" फ़ील्ड में, जनरेट किया गया SHA-1 सर्टिफ़िकेट फ़िंगरप्रिंट डालें.
  7. बनाएं पर क्लिक करें. OAuth क्लाइंट बनने के बाद, आपको एक स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी दिखेगा.
  8. ठीक है पर क्लिक करें. नया क्रेडेंशियल, "OAuth 2.0 क्लाइंट आईडी" में दिखता है.

iOS

  1. Google Cloud console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.

    क्रेडेंशियल पर जाएं

  2. क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
  3. ऐप्लिकेशन टाइप > iOS पर क्लिक करें.
  4. "नाम" फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम टाइप करें. यह नाम सिर्फ़ Google Cloud कंसोल में दिखता है.
  5. "बंडल आईडी" फ़ील्ड में, ऐप्लिकेशन की Info.plist फ़ाइल में मौजूद बंडल आइडेंटिफ़ायर डालें.
  6. ज़रूरी नहीं: अगर आपका ऐप्लिकेशन Apple App Store में दिखता है, तो ऐप स्टोर आईडी डालें.
  7. ज़रूरी नहीं: "टीम आईडी" फ़ील्ड में, 10 वर्णों की वह यूनीक स्ट्रिंग डालें जो Apple ने जनरेट की है और आपकी टीम को असाइन की है.
  8. बनाएं पर क्लिक करें. OAuth क्लाइंट बनने के बाद, आपको एक स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट पासवर्ड दिखेगा.
  9. ठीक है पर क्लिक करें. नया क्रेडेंशियल, "OAuth 2.0 Client-ID" में दिखता है.

Chrome ऐप्लिकेशन

  1. Google Cloud console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.

    क्रेडेंशियल पर जाएं

  2. क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
  3. ऐप्लिकेशन टाइप > Chrome ऐप्लिकेशन पर क्लिक करें.
  4. "नाम" फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम टाइप करें. यह नाम सिर्फ़ Google Cloud Console में दिखता है.
  5. "ऐप्लिकेशन आईडी" फ़ील्ड में, अपने ऐप्लिकेशन की 32 वर्णों की खास आईडी स्ट्रिंग डालें. आपको यह आईडी मान अपने ऐप्लिकेशन के Chrome वेब स्टोर URL और Chrome वेब स्टोर डेवलपर डैशबोर्ड में मिल सकता है.
  6. बनाएं पर क्लिक करें. OAuth क्लाइंट की बनाई गई स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट सीक्रेट दिखेगा.
  7. ठीक है पर क्लिक करें. नया क्रेडेंशियल, "OAuth 2.0 Client-ID" में दिखता है.

डेस्कटॉप ऐप्लिकेशन

  1. Google Cloud console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.

    क्रेडेंशियल पर जाएं

  2. क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
  3. ऐप्लिकेशन का टाइप > डेस्कटॉप ऐप्लिकेशन पर क्लिक करें.
  4. नाम फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम टाइप करें. यह नाम सिर्फ़ Google Cloud कंसोल में दिखता है.
  5. बनाएं पर क्लिक करें. OAuth क्लाइंट बनने के बाद, आपको एक स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट पासवर्ड दिखेगा.
  6. ठीक है पर क्लिक करें. नया क्रेडेंशियल, OAuth 2.0 क्लाइंट आईडी में दिखता है.

टीवी और सीमित इनपुट डिवाइस

  1. Google Cloud console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.

    क्रेडेंशियल पर जाएं

  2. क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
  3. ऐप्लिकेशन टाइप > टीवी और सीमित इनपुट डिवाइस पर क्लिक करें.
  4. "नाम" फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम लिखें. यह नाम सिर्फ़ Google Cloud कंसोल में दिखता है.
  5. बनाएं पर क्लिक करें. OAuth क्लाइंट बनने के बाद, आपको एक स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट पासवर्ड दिखेगा.
  6. ठीक है पर क्लिक करें. नया क्रेडेंशियल, "OAuth 2.0 क्लाइंट आईडी" में दिखता है.

Universal Windows Platform (यूडब्ल्यूपी)

  1. Google Cloud console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.

    क्रेडेंशियल पर जाएं

  2. क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
  3. ऐप्लिकेशन टाइप > Universal Windows Platform (यूडब्ल्यूपी) पर क्लिक करें.
  4. "नाम" फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम लिखें. यह नाम सिर्फ़ Google Cloud Console में दिखता है.
  5. "स्टोर आईडी" फ़ील्ड में, अपने ऐप्लिकेशन का यूनीक Microsoft Store आईडी डालें. यह 12 वर्णों का होना चाहिए. यह आईडी, आपके ऐप्लिकेशन के Microsoft Store यूआरएल और Partner Center में देखा जा सकता है.
  6. बनाएं पर क्लिक करें. OAuth क्लाइंट बनने के बाद, आपको एक स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट पासवर्ड दिखेगा.
  7. ठीक है पर क्लिक करें. नया क्रेडेंशियल, "OAuth 2.0 क्लाइंट आईडी" में दिखता है.

क्लाइंट सीक्रेट की JSON फ़ाइल डाउनलोड करना

क्लाइंट सीक्रेट फ़ाइल, OAuth क्लाइंट आईडी के क्रेडेंशियल का JSON वर्शन होती है. क्रेडेंशियल उपलब्ध कराने के दौरान, आपका Chat ऐप्लिकेशन इसका रेफ़रंस दे सकता है.

  1. Google Cloud console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल पर जाएं.

    क्रेडेंशियल पर जाएं

  2. OAuth 2.0 क्लाइंट आईडी में जाकर, अपने बनाए गए क्लाइंट आईडी पर क्लिक करें.

  3. JSON फ़ाइल डाउनलोड करें पर क्लिक करें.

  4. फ़ाइल को client_secrets.json के तौर पर सेव करें.

तीसरा चरण: Google क्लाइंट लाइब्रेरी और अन्य डिपेंडेंसी इंस्टॉल करना

प्रोजेक्ट के लिए ज़रूरी Google क्लाइंट लाइब्रेरी और अन्य डिपेंडेंसी इंस्टॉल करें.

Java

अपने Maven प्रोजेक्ट में Google क्लाइंट लाइब्रेरी और अन्य ज़रूरी डिपेंडेंसी जोड़ने के लिए, अपने प्रोजेक्ट की डायरेक्ट्री में मौजूद 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>

Python

अगर आपने Python के लिए Google की क्लाइंट लाइब्रेरी पहले से इंस्टॉल नहीं की हैं, तो अपने कमांड-लाइन इंटरफ़ेस में यह कमांड चलाएं:

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

Node.js

अपने Node.js प्रोजेक्ट में Google क्लाइंट लाइब्रेरी और अन्य ज़रूरी डिपेंडेंसी जोड़ने के लिए, अपने प्रोजेक्ट की डायरेक्ट्री पर स्विच करें और कमांड-लाइन इंटरफ़ेस में यह कमांड चलाएं:

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

Apps Script

यह सैंपल, Google Chat API को कॉल करने के लिए, ऐडवांस चैट सेवा का इस्तेमाल करता है. अपने Apps Script प्रोजेक्ट के लिए सेवा चालू करने के लिए:

  1. बाईं ओर, एडिटर पर क्लिक करें.
  2. बाईं ओर, सेवाएं के बगल में मौजूद, सेवा जोड़ें पर क्लिक करें .
  3. Google Chat API चुनें.
  4. वर्शन में, v1 चुनें.
  5. जोड़ें पर क्लिक करें.

हमारी क्लाइंट लाइब्रेरी में काम करने वाली किसी भी भाषा का इस्तेमाल किया जा सकता है.

चौथा चरण: Chat API को कॉल करने वाली स्क्रिप्ट लिखना

OAuth अनुमति की मदद से किसी एपीआई को कॉल करने की प्रोसेस में कई चरण होते हैं. वेब या डिस्कटॉप ऐप्लिकेशन में, आम तौर पर यह प्रोसेस इस तरह होती है:

  1. ऐप्लिकेशन, उपयोगकर्ता को अनुमति वाले पेज पर ले जाता है. इस पेज पर, उपयोगकर्ता से अनुमति वाले दायरों में बताए गए डेटा को ऐक्सेस करने का अनुरोध किया जाता है. ऐप्लिकेशन, क्लाइंट आईडी क्रेडेंशियल की मदद से अपनी पहचान करता है.
  2. उपयोगकर्ता, ऐप्लिकेशन से मांगी गई अनुमतियों की समीक्षा करता है और अनुरोध को मंज़ूरी देता है.
  3. Google का ऑथेंटिकेशन सर्वर, ब्राउज़र को अनुमति वाले कोड के साथ ऐप्लिकेशन के एचटीटीपी एंडपॉइंट पर रीडायरेक्ट करता है.
  4. ऐप्लिकेशन, ऑथराइज़ेशन कोड को ऐक्सेस टोकन में बदलने के लिए, Google के ऑथराइज़ेशन सर्वर को एक और अनुरोध भेजता है.
  5. ऐप्लिकेशन, उपयोगकर्ता की ओर से एपीआई को कॉल करने के लिए ऐक्सेस टोकन का इस्तेमाल करता है.

OAuth से जुड़ी अनुमति की प्रोसेस के बारे में ज़्यादा जानने के लिए, Google API को ऐक्सेस करने के लिए OAuth 2.0 का इस्तेमाल करने की गाइड देखें.

Java, Python, और Node.js के लिए दिए गए कोड के सैंपल, OAuth की पुष्टि करने के फ़्लो को लागू करने के लिए क्लाइंट लाइब्रेरी का इस्तेमाल करते हैं. यह ऑथराइज़ेशन सर्वर से ऑथराइज़ेशन कोड वापस पाने के लिए, एक स्थानीय एचटीटीपी सर्वर खोलता है. इसके बाद, इसे ऐक्सेस टोकन के लिए बदल दिया जाता है. Apps Script कोड सैंपल में, ऑथराइज़ेशन फ़्लो को Apps Script मैनेज करता है.

पुष्टि करने की प्रोसेस पूरी होने के बाद, स्क्रिप्ट उपयोगकर्ता के ऐक्सेस टोकन का इस्तेमाल करके, Chat API से पुष्टि करती है. इसके बाद, वह स्पेस बनाती है.

Java

  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>
    

Python

  1. नीचे दिए गए कोड को client_secrets.json वाली डायरेक्ट्री में, chat_space_create_named.py नाम की फ़ाइल में सेव करें:

    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);
    

Apps Script

  1. Apps Script एडिटर में, फ़ाइल appsscript.json में बदलाव करें और एपीआई को कॉल करने के लिए ज़रूरी OAuth स्कोप जोड़ें:

      "oauthScopes": [
        "https://www.googleapis.com/auth/chat.spaces.create"
      ]
    
  2. इस कोड को अपने Apps Script प्रोजेक्ट में 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);
      }
    }
    

पांचवां चरण: उदाहरण के तौर पर दी गई स्क्रिप्ट चलाना

उदाहरण को चलाने के लिए, कमांड लाइन से उस डायरेक्ट्री पर जाएं जिसमें आपकी प्रोजेक्ट फ़ाइलें हैं. इसके बाद, इन कमांड को एक्ज़ीक्यूट करें:

Java

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

Python

python3 chat_space_create_named.py

Node.js

node chat_space_create_named.js

Apps Script

Apps Script एडिटर में फ़ाइल ChatSpaceCreateNamed.gs खोलें और चालू करें पर क्लिक करें.

इसके बाद, एक ब्राउज़र खुलेगा और आपको अपने Google खाते में साइन इन करने के लिए कहा जाएगा:

Chat ऐप्लिकेशन को अनुमति देने के लिए साइन इन किया जा रहा है.

दूसरी इमेज. OAuth की सहमति वाली स्क्रीन, जहां आपको यह चुनना होता है कि ऐप्लिकेशन की पुष्टि किस खाते से करनी है.

साइन इन करने के बाद, OAuth की सहमति वाली स्क्रीन दिखती है. इसमें आपसे ऐप्लिकेशन को अनुमति देने के लिए कहा जाता है.

आपकी अनुमति मिलने के बाद, स्क्रिप्ट Chat API को कॉल करती है, जो जवाब देने के लिए API-made डिसप्ले नाम वाला चैट स्पेस बनाता है. कंसोल, एपीआई कॉल की जानकारी को प्रिंट करता है. स्पेस ढूंढने के लिए, Google Chat में स्पेस पैनल पर जाएं.

उदाहरण से जुड़ी समस्या हल करना

chat_space_create_named.py को चलाते समय, आपको गड़बड़ी का यह मैसेज मिल सकता है:

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

गड़बड़ी के इस मैसेज का मतलब है कि Google Cloud Console से डाउनलोड की गई client_secrets.json फ़ाइल, "web" या "installed" प्रॉपर्टी से शुरू नहीं होती. डाउनलोड की गई फ़ाइल की पुष्टि करने के बाद, अगर आपका कोड token.json जैसी नई फ़ाइल में ऐक्सेस टोकन सेव नहीं करता है, तो ऐक्सेस टोकन client_secrets.json में सेव हो जाता है. इस वजह से, अनुमति पाने की कोशिश करने पर यह गड़बड़ी दिख सकती है.

गड़बड़ी को ठीक करने के लिए, Google Cloud Console से क्लाइंट सेक्रेट फ़ाइल को फिर से डाउनलोड करें और नई फ़ाइल को मौजूदा फ़ाइल की जगह सेव करें.

  • अगर आपके ऐप्लिकेशन को किसी एक फ़्लो के दायरे से बाहर उपयोगकर्ता टोकन का इस्तेमाल करना जारी रखना है, तो वह टोकन सेव करके, बाद में उनका फिर से इस्तेमाल कर सकता है. इस मामले में, आपके ऐप्लिकेशन को उपयोगकर्ता टोकन को सुरक्षित तरीके से मैनेज करना होगा. साथ ही, रीफ़्रेश टोकन रद्द होने और उसकी समयसीमा खत्म होने की प्रोसेस को भी मैनेज करना होगा. ज़्यादा जानकारी के लिए, OAuth 2.0 के सबसे सही तरीकों की गाइड का इस्तेमाल करना लेख पढ़ें.

  • Chat API के बारे में जानकारी देने वाले दस्तावेज़ पढ़कर जानें कि Chat API और क्या-क्या कर सकता है.