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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 क्लाइंट आईडी में, अपने बनाए गए क्लाइंट आईडी पर क्लिक करें.

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

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

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

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