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

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

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

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

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

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

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

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

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

इस गाइड में दिए गए उदाहरण को चलाने के लिए, आपके पास नीचे दी गई शर्तें होनी चाहिए:

इसके अलावा, आपको भाषा के हिसाब से ये ज़रूरी शर्तें पूरी करनी होंगी:

Java

  • 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

  • Python 3.6 या इससे नया वर्शन
  • pip पैकेज मैनेजमेंट टूल

Node.js

  • Node.js
  • npm पैकेज मैनेजमेंट टूल
  • शुरू किया गया Node.js प्रोजेक्ट. नया प्रोजेक्ट शुरू करने के लिए, नया फ़ोल्डर बनाएं और उस पर स्विच करें. इसके बाद, अपने कमांड-लाइन इंटरफ़ेस में यह कमांड चलाएं:

    npm init
    

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 क्लाइंट आईडी बनाने होंगे. Client-ID का इस्तेमाल, 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 Client ID में दिखता है.

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 Client ID" में दिखता है.

iOS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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. यह ऐप्लिकेशन, उपयोगकर्ता को अनुमति देने वाले ऐसे पेज पर ले जाता है जहां उपयोगकर्ता के ऐसे डेटा को ऐक्सेस करने का अनुरोध किया जाता है जो अनुमति देने के दायरे में आता है. यह ऐप्लिकेशन, Client-ID क्रेडेंशियल से अपनी पहचान करता है.
  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. नीचे दिए गए कोड को 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);
    

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 Editor में ChatSpaceCreateNamed.gs फ़ाइल खोलें और Run पर क्लिक करें.

एक ब्राउज़र खुलता है और आपसे अपने 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 कंसोल से जो client_secrets.json फ़ाइल डाउनलोड की है वह "web" या "installed" प्रॉपर्टी से शुरू नहीं होती. डाउनलोड की गई फ़ाइल की पुष्टि करने के बाद, अगर आपका कोड, ऐक्सेस टोकन को token.json जैसी नई फ़ाइल में सेव नहीं करता है, तो ऐक्सेस टोकन client_secrets.json पर लिखा जाता है. इससे, अनुमति देने की बाद की कोशिशों के दौरान यह गड़बड़ी हो सकती है.

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

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

  • Chat API के रेफ़रंस दस्तावेज़ देखकर जानें कि Chat API और क्या-क्या कर सकता है.