इस गाइड में बताया गया है कि उपयोगकर्ताओं के साथ OAuth 2.0 को कैसे इस्तेमाल किया जा सकता है इसके लिए Google क्रेडेंशियल ऐक्सेस करें Chat API. पुष्टि करना और अनुमति देना यह विकल्प उपयोगकर्ता के क्रेडेंशियल की मदद से, चैट ऐप्लिकेशन को उपयोगकर्ता का डेटा ऐक्सेस करके किसी पुष्टि या कार्रवाई के लिए किया जा सकता है. उपयोगकर्ता की पुष्टि करके ऐप्लिकेशन के पास वही अनुमतियां होती हैं जो उपयोगकर्ता के पास होती हैं और वह कार्रवाइयां कर सकता है जैसे उसे उपयोगकर्ता ने जो किया हो.
पुष्टि करने और अनुमति देने के बाद उपयोगकर्ता क्रेडेंशियल वाले एपीआई कॉल का इस्तेमाल करते हैं, तो चैट ऐप्लिकेशन फ़ॉलो किया जा रहा है:
- चैट स्पेस बनाना.
- Chat स्पेस और ग्रुप बातचीत में उपयोगकर्ताओं को जोड़ना.
- Workspace के अन्य एपीआई में, उपयोगकर्ता के डेटा के साथ काम करें. जैसे:
- इवेंट बनाना खोलें.
- आइटम लॉग करना के तौर पर दिखते हैं.
- ईमेल भेजें Gmail के साथ.
जब कोई ऐप्लिकेशन, उपयोगकर्ता की पुष्टि करने की कार्रवाई करता है (जैसे, स्पेस बनाना), Google Chat एट्रिब्यूशन मैसेज दिखाता है जो उपयोगकर्ताओं को उस ऐप्लिकेशन का नाम बताता है जिसने उपयोगकर्ता जिसने इसे अधिकृत किया था.
![Google Chat ऐप्लिकेशन, उपयोगकर्ता के लिए स्पेस बनाता है.](https://developers-dot-devsite-v2-prod.appspot.com/static/workspace/chat/images/auth-user-create-space.png?authuser=4&hl=hi)
Chat ऐप्लिकेशन को पुष्टि करने की ज़रूरत कब पड़ती है, इस बारे में ज़्यादा जानने के लिए पुष्टि करने का कौनसा तरीका इस्तेमाल करना है, पुष्टि करने के ज़रूरी तरीके अनुमति की खास जानकारी देखें.
पूरे डोमेन के लोगों को डेटा का ऐक्सेस देने की सुविधा का इस्तेमाल करके पुष्टि करें और अनुमति दें
डोमेन एडमिन के तौर पर, आपके पास पूरे डोमेन के लोगों को अधिकार देना किसी ऐप्लिकेशन के सेवा खाते को आपके उपयोगकर्ताओं की डेटा के बिना हर उपयोगकर्ता के लिए सहमति देना ज़रूरी है. पूरे डोमेन के लोगों को डेटा का ऐक्सेस देने की सुविधा कॉन्फ़िगर करने के बाद, यह सेवा खाता किसी उपयोगकर्ता खाते की पहचान चुरा सकता है. हालांकि, सेवा खाते का इस्तेमाल इन कामों के लिए किया जाता है पुष्टि करने के लिए, पूरे डोमेन के लोगों को डेटा का ऐक्सेस दिया जाता है. इसलिए, यह किसी उपयोगकर्ता के नाम पर काम करता है उपयोगकर्ता ऑथेंटिकेशन माना जाता है. ऐसी कोई भी सुविधा जिसके लिए उपयोगकर्ता की ज़रूरत होती है पुष्टि करने के लिए, आप पूरे डोमेन के लोगों को डेटा का ऐक्सेस दे सकते हैं.
एडमिन के अधिकारों का इस्तेमाल करके पुष्टि करें और अनुमति दें
अगर आप डोमेन एडमिन हैं या ऐसे एडमिन हैं जिसे एडमिन के अधिकारों का ऐक्सेस दिया गया है, तो आपके पास Google Chat API में अपने कॉल की पुष्टि करने और अनुमति देने का विकल्प होता है. इसके लिए, आपको उन तरीकों के अनुरोध में use_admin_access
फ़ील्ड को सेट करना होगा जिन पर एडमिन के अधिकार मिलते हैं. ज़्यादा जानकारी के लिए, एपीआई से जुड़ा रेफ़रंस दस्तावेज़ देखें.
ध्यान दें कि जब Google Chat ऐप्लिकेशन, एडमिन के खास अधिकारों वाली कोई कार्रवाई करता है, तो Chat उपयोगकर्ताओं को कार्रवाई करने वाले Chat ऐप्लिकेशन का नाम या इसे अनुमति देने वाले एडमिन का नाम नहीं बताएगा. हालांकि, उपयोगकर्ताओं को सिर्फ़ यह बताया जाएगा कि यह कार्रवाई उनके संगठन का एडमिन ही करेगा.
ज़रूरी शर्तें
Java
- कारोबार या एंटरप्राइज़ Google Workspace खाता, जिसके पास इसका ऐक्सेस है Google Chat.
- Google Cloud प्रोजेक्ट बनाएं.
- 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
- कारोबार या एंटरप्राइज़ Google Workspace खाता, जिसके पास इसका ऐक्सेस है Google Chat.
- Google Cloud प्रोजेक्ट बनाएं.
- Google Chat API को चालू और कॉन्फ़िगर करें. आइकॉन और ब्यौरा जोड़ें.
- Python 3.6 या इससे नया वर्शन
- पीआईपी पैकेज मैनेजमेंट टूल
Node.js
- कारोबार या एंटरप्राइज़ Google Workspace खाता, जिसके पास इसका ऐक्सेस है Google Chat.
- Google Cloud प्रोजेक्ट बनाएं.
- Google Chat API को चालू और कॉन्फ़िगर करें. आइकॉन और ब्यौरा जोड़ें.
- Node.js 14 या उसके बाद का वर्शन
- npm पैकेज मैनेजमेंट टूल
-
शुरू किया गया Node.js प्रोजेक्ट. नया प्रोजेक्ट शुरू करने के लिए, प्रोजेक्ट बनाएं और
नए फ़ोल्डर में स्विच करें, फिर अपने कमांड-लाइन इंटरफ़ेस में यहां दिया गया कमांड चलाएं:
npm init
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
Apps Script
- कारोबार या एंटरप्राइज़ Google Workspace खाता, जिसके पास इसका ऐक्सेस है Google Chat.
- Google Cloud प्रोजेक्ट बनाएं.
- Google Chat API को चालू और कॉन्फ़िगर करें. आइकॉन और ब्यौरा जोड़ें.
- स्टैंडअलोन Apps Script प्रोजेक्ट बनाना, और बेहतर चैट सेवा चालू करें.
पहला चरण: उस स्क्रीन को कॉन्फ़िगर करें जहां OAuth के लिए सहमति दी जाती है, दायरे बताएं, और अपना ऐप्लिकेशन रजिस्टर करें
अनुमति देने के लिए OAuth 2.0 का इस्तेमाल करने पर, Google इन कामों के लिए सहमति वाली स्क्रीन दिखाता है उपयोगकर्ता को आपके प्रोजेक्ट की खास जानकारी, उसकी नीतियां, और अनुरोध किए गए अनुमति के दायरे आते हैं. अपने ऐप्लिकेशन की ऐसी स्क्रीन कॉन्फ़िगर करना जहां OAuth के लिए सहमति दी जाती है इससे पता चलता है कि Google, उपयोगकर्ताओं और ऐप्लिकेशन की समीक्षा करने वालों को क्या दिखाता है. साथ ही, आपके ऐप्लिकेशन को रजिस्टर करता है ताकि इसे बाद में पब्लिश किया जा सके.
OAuth 2.0 का इस्तेमाल करने वाले सभी ऐप्लिकेशन के लिए, सहमति वाली स्क्रीन कॉन्फ़िगर करना ज़रूरी है. हालांकि, आपको सिर्फ़ उन ऐप्लिकेशन के दायरे की सूची बनाने की ज़रूरत है जिनका इस्तेमाल Google Workspace से बाहर के लोग करते हैं संगठन.
Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > OAuth की सहमति वाली स्क्रीन.
पर जाएंअपने ऐप्लिकेशन के लिए, उपयोगकर्ता का टाइप चुनें. इसके बाद, बनाएं पर क्लिक करें.
ऐप्लिकेशन रजिस्ट्रेशन फ़ॉर्म भरें. इसके बाद, सेव करें और जारी रखें पर क्लिक करें.
स्कोप जोड़ें या हटाएं पर क्लिक करें. अपनी प्रोफ़ाइल फ़ोटो में, आपके ऐप्लिकेशन के लिए, उन दायरों को अनुमति देना ज़रूरी है जिनके लिए अनुमति देनी होगी. इसके लिए, अपडेट करें पर क्लिक करें. इसके बाद, सेव करें और जारी रखें पर क्लिक करें.
अपने ऐप्लिकेशन रजिस्ट्रेशन की खास जानकारी देखें. बदलाव करने के लिए, बदलाव करें पर क्लिक करें या डैशबोर्ड पर वापस जाएं पर क्लिक करें.
दूसरा चरण: Google Cloud Console में OAuth क्लाइंट आईडी के क्रेडेंशियल बनाना
असली उपयोगकर्ता के तौर पर अपनी पहचान की पुष्टि करने और अपने ऐप्लिकेशन में उपयोगकर्ता का डेटा ऐक्सेस करने के लिए, आपको ये शर्तें पूरी करनी होंगी एक या उससे ज़्यादा OAuth 2.0 क्लाइंट आईडी बनाएं. Client-ID का इस्तेमाल, के लिए एक ऐप्लिकेशन बनाया है. अगर आपका ऐप्लिकेशन कई डिवाइसों पर चलता है आपको Android, iOS, और वेब जैसे प्लैटफ़ॉर्म के लिए एक अलग क्लाइंट आईडी बनाना होगा. इस्तेमाल किया जा सकता है.
OAuth क्लाइंट आईडी के क्रेडेंशियल बनाएं
OAuth क्लाइंट आईडी बनाने के तरीके से जुड़े खास निर्देशों के लिए, अपना ऐप्लिकेशन टाइप चुनें:
वेब एेप्लिकेशन
- Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल.
- क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
- ऐप्लिकेशन टाइप > वेब ऐप्लिकेशन पर क्लिक करें.
- नाम फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम लिखें. यह नाम सिर्फ़ Google Cloud Console में दिखता है.
- अपने ऐप्लिकेशन से जुड़े आधिकारिक यूआरआई जोड़ें:
- क्लाइंट-साइड ऐप्लिकेशन (JavaScript)–अनुमति वाले JavaScript ऑरिजिन में जाकर, यूआरआई जोड़ें पर क्लिक करें. इसके बाद, ब्राउज़र अनुरोधों के इस्तेमाल के लिए यूआरआई डालें. यह उन डोमेन की पहचान करता है जिनसे आपका ऐप्लिकेशन, OAuth 2.0 सर्वर को एपीआई अनुरोध भेज सकता है.
- सर्वर-साइड ऐप्लिकेशन (Java, Python वगैरह)–अनुमति वाले रीडायरेक्ट यूआरआई में जाकर, यूआरआई जोड़ें पर क्लिक करें. इसके बाद, एंडपॉइंट यूआरआई डालें जिस पर OAuth 2.0 सर्वर जवाब भेज सके.
- बनाएं पर क्लिक करें. OAuth क्लाइंट की बनाई गई स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट सीक्रेट दिखेगा.
Client-ID नोट करें. वेब ऐप्लिकेशन के लिए क्लाइंट सीक्रेट का इस्तेमाल नहीं किया जाता.
- ठीक है पर क्लिक करें. नया क्रेडेंशियल, OAuth 2.0 क्लाइंट आईडी के तहत दिखता है.
Android
- Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल.
- क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
- ऐप्लिकेशन टाइप > Android पर क्लिक करें.
- "नाम" में फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम लिखें. यह नाम सिर्फ़ Google Cloud Console में दिखता है.
- "पैकेज का नाम" फ़ील्ड में, अपनी
AndroidManifest.xml
फ़ाइल से पैकेज नाम डालें. - "SHA-1 प्रमाणपत्र फ़िंगरप्रिंट" में फ़ील्ड में, अपना जनरेट किया गया SHA-1 सर्टिफ़िकेट फ़िंगरप्रिंट डालें.
- बनाएं पर क्लिक करें. OAuth क्लाइंट की बनाई गई स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी दिखेगा.
- ठीक है पर क्लिक करें. नया क्रेडेंशियल, "OAuth 2.0 Client-ID" में दिखता है.
iOS
- Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल.
- क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
- ऐप्लिकेशन टाइप > iOS पर क्लिक करें.
- "नाम" में फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम लिखें. यह नाम सिर्फ़ Google Cloud Console में दिखता है.
- "बंडल आईडी" में फ़ील्ड में, ऐप्लिकेशन की
Info.plist
फ़ाइल में दिया गया बंडल आइडेंटिफ़ायर डालें. - वैकल्पिक: अगर आपका ऐप्लिकेशन Apple App Store में दिखता है, तो App Store आईडी डालें.
- ज़रूरी नहीं: "टीम आईडी" में फ़ील्ड में, 10 वर्णों की यूनीक स्ट्रिंग डालें. यह स्ट्रिंग Apple जनरेट करेगी और इसे आपकी टीम को असाइन किया जाएगा.
- बनाएं पर क्लिक करें. OAuth क्लाइंट की बनाई गई स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट सीक्रेट दिखेगा.
- ठीक है पर क्लिक करें. नया क्रेडेंशियल, "OAuth 2.0 Client-ID" में दिखता है.
Chrome ऐप्लिकेशन
- Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल.
- क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
- ऐप्लिकेशन टाइप > Chrome ऐप्लिकेशन पर क्लिक करें.
- "नाम" में फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम लिखें. यह नाम सिर्फ़ Google Cloud Console में दिखता है.
- "ऐप्लिकेशन आईडी" में फ़ील्ड में, अपने ऐप्लिकेशन की 32 वर्णों की खास आईडी स्ट्रिंग डालें. आपको यह आईडी मान अपने ऐप्लिकेशन के Chrome वेब स्टोर URL और Chrome वेब स्टोर डेवलपर डैशबोर्ड में मिल सकता है.
- बनाएं पर क्लिक करें. OAuth क्लाइंट की बनाई गई स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट सीक्रेट दिखेगा.
- ठीक है पर क्लिक करें. नया क्रेडेंशियल, "OAuth 2.0 Client-ID" में दिखता है.
डेस्कटॉप ऐप्लिकेशन
- Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल.
- क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
- ऐप्लिकेशन टाइप > डेस्कटॉप ऐप्लिकेशन पर क्लिक करें.
- नाम फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम लिखें. यह नाम सिर्फ़ Google Cloud Console में दिखता है.
- बनाएं पर क्लिक करें. OAuth क्लाइंट की बनाई गई स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट सीक्रेट दिखेगा.
- ठीक है पर क्लिक करें. नया क्रेडेंशियल, OAuth 2.0 क्लाइंट आईडी के तहत दिखता है.
टीवी और सीमित इनपुट डिवाइस
- Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल.
- क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
- ऐप्लिकेशन टाइप > टीवी और सीमित इनपुट डिवाइस.
- "नाम" में फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम लिखें. यह नाम सिर्फ़ Google Cloud Console में दिखता है.
- बनाएं पर क्लिक करें. OAuth क्लाइंट की बनाई गई स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट सीक्रेट दिखेगा.
- ठीक है पर क्लिक करें. नया क्रेडेंशियल, "OAuth 2.0 Client-ID" में दिखता है.
Universal Windows Platform (यूडब्ल्यूपी)
- Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल.
- क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी पर क्लिक करें.
- ऐप्लिकेशन टाइप > Universal Windows Platform (UWP) पर क्लिक करें.
- "नाम" में फ़ील्ड में, क्रेडेंशियल के लिए कोई नाम लिखें. यह नाम सिर्फ़ Google Cloud Console में दिखता है.
- "स्टोर आईडी" में फ़ील्ड में, अपने ऐप्लिकेशन का अद्वितीय, 12-वर्णों का Microsoft Store ID मान डालें. आपको यह आईडी अपने ऐप्लिकेशन के Microsoft Store यूआरएल और Partner Center में मिल जाएगा.
- बनाएं पर क्लिक करें. OAuth क्लाइंट की बनाई गई स्क्रीन दिखेगी. इसमें आपका नया क्लाइंट आईडी और क्लाइंट सीक्रेट दिखेगा.
- ठीक है पर क्लिक करें. नया क्रेडेंशियल, "OAuth 2.0 Client-ID" में दिखता है.
क्लाइंट की सीक्रेट JSON फ़ाइल डाउनलोड करें
क्लाइंट की सीक्रेट फ़ाइल, OAuth क्लाइंट आईडी को JSON फ़ॉर्मैट में दिखाती है ऐसे क्रेडेंशियल जिनका इस्तेमाल Chat ऐप्लिकेशन कर सके क्रेडेंशियल उपलब्ध कराकर.
Google Cloud Console में, मेन्यू > एपीआई और सेवाएं > क्रेडेंशियल.
पर जाएंOAuth 2.0 क्लाइंट आईडी में, अपने बनाए गए क्लाइंट आईडी पर क्लिक करें.
JSON डाउनलोड करें पर क्लिक करें.
फ़ाइल को
client_secrets.json
के तौर पर सेव करें.
तीसरा चरण: Google क्लाइंट लाइब्रेरी और अन्य डिपेंडेंसी इंस्टॉल करना
प्रोजेक्ट के लिए ज़रूरी Google क्लाइंट लाइब्रेरी और अन्य डिपेंडेंसी इंस्टॉल करें.
Java
Google क्लाइंट लाइब्रेरी और अन्य ज़रूरी डिपेंडेंसी को अपने
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>
Python
अगर आपने Python के लिए, पहले से Google क्लाइंट लाइब्रेरी इंस्टॉल नहीं की है, तो आपके कमांड-लाइन इंटरफ़ेस में यह कमांड:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
Node.js
Google क्लाइंट लाइब्रेरी और अन्य ज़रूरी डिपेंडेंसी को अपने Node.js प्रोजेक्ट के लिए, अपने प्रोजेक्ट की डायरेक्ट्री पर स्विच करें और यहां बताए गए काम करें कमांड:
npm install "@googleapis/chat" open server-destroy
Apps Script
यह नमूना Chat की बेहतर सेवा का इस्तेमाल करें. अपने Apps Script प्रोजेक्ट:
- बाईं ओर, एडिटर पर क्लिक करें.
- बाईं ओर, सेवाएं के बगल में, सेवा जोड़ें पर क्लिक करें .
- Google Chat API चुनें.
- वर्शन में, v1 चुनें.
- जोड़ें पर क्लिक करें.
आप हमारे द्वारा समर्थित किसी भी भाषा का उपयोग कर सकते हैं क्लाइंट लाइब्रेरी.
चौथा चरण: Chat API को कॉल करने वाली स्क्रिप्ट लिखें
OAuth की मदद से, एपीआई को कॉल करने की प्रक्रिया कई चरणों वाली है. वेब या डेस्कटॉप ऐप्लिकेशन का इस्तेमाल करते हैं, तो प्रक्रिया आम तौर पर इस तरह होती है:
- ऐप्लिकेशन, उपयोगकर्ता को ऐक्सेस का अनुरोध करने वाले अनुमति पेज पर भेजता है अनुमति वाले स्कोप से मिला डेटा. ऐप्लिकेशन, क्लाइंट से खुद की पहचान करता है आईडी के क्रेडेंशियल.
- उपयोगकर्ता, ऐप्लिकेशन के अनुरोध की गई अनुमतियों की समीक्षा करता है और अनुरोध.
- Google का ऑथेंटिकेशन सर्वर, ब्राउज़र को ऐप्लिकेशन के एचटीटीपी पर रीडायरेक्ट करता है एंडपॉइंट के साथ एक ऑथराइज़ेशन कोड भी दिखेगा.
- ऐप्लिकेशन इस पते के लिए Google के प्राधिकरण सर्वर को एक अन्य अनुरोध भेजता है ऑथराइज़ेशन कोड को ऐक्सेस टोकन से एक्सचेंज करें.
- यह ऐप्लिकेशन, उपयोगकर्ता की ओर से एपीआई को कॉल करने के लिए, ऐक्सेस टोकन का इस्तेमाल करता है.
OAuth के इस्तेमाल की अनुमति देने की प्रोसेस के बारे में ज़्यादा जानने के लिए, यहां जाएं Google API गाइड को ऐक्सेस करने के लिए, OAuth 2.0 का इस्तेमाल करना.
Java, Python, और Node.js में दिए गए कोड सैंपल, क्लाइंट लाइब्रेरी का इस्तेमाल करके, OAuth के ऑथराइज़ेशन फ़्लो को एक्ज़ीक्यूट किया जा सकता है. यह एक लोकल एचटीटीपी सर्वर खोलता है, जो को अनुमति देने वाले सर्वर से ऑथराइज़ेशन कोड को वापस पाना होता है, जिसे यह ऐक्सेस टोकन की अदला-बदली करता है. Apps Script कोड सैंपल में, अनुमति देने का यह फ़्लो Apps Script के ज़रिए हैंडल की जाती हैं.
प्रमाणीकरण फ़्लो पूरा करने के बाद, स्क्रिप्ट Chat API, उपयोगकर्ता के ऐक्सेस टोकन का इस्तेमाल करके और फिर एक स्पेस बनाता है.
Java
- अपने प्रोजेक्ट की डायरेक्ट्री में फ़ाइल खोलें
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 = "/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(); } }
अपने प्रोजेक्ट की डायरेक्ट्री में,
resources
नाम की एक नई सबडायरेक्ट्री बनाएं.client_secrets.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>
Python
नीचे दिए गए कोड को
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
नीचे दिए गए कोड को
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
Apps Script एडिटर में,
appsscript.json
फ़ाइल में बदलाव करें और एपीआई को कॉल करने के लिए ज़रूरी OAuth दायरा जोड़ें:"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); } }
पांचवां चरण: उदाहरण के तौर पर दी गई स्क्रिप्ट चलाना
उदाहरण को चलाने के लिए, कमांड लाइन से, धारण करने वाली डायरेक्ट्री पर जाएं अपनी प्रोजेक्ट फ़ाइलों को एक्सपोर्ट करने के बाद, नीचे दिए गए कमांड को एक्ज़ीक्यूट करें:
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
ChatSpaceCreateNamed.gs
फ़ाइल को Apps Script में खोलें
एडिटर खोलें और Run पर क्लिक करें.
एक ब्राउज़र खुलता है और आपको अपने Google खाते में साइन इन करने का प्रॉम्प्ट देता है:
साइन इन करने के बाद, आपको ऐसी स्क्रीन दिखती है जहां 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
गड़बड़ी के इस मैसेज का मतलब है कि आपने जो client_secrets.json
फ़ाइल डाउनलोड की
Play Console से, "web"
या "installed"
से शुरू नहीं होता
प्रॉपर्टी. डाउनलोड की गई फ़ाइल से पुष्टि करने के बाद, अगर आपका कोड
ऐक्सेस टोकन को token.json
जैसी नई फ़ाइल में सेव करें. इसके बाद, ऐक्सेस टोकन यह होगा
client_secrets.json
पर लिखा गया है, जिसकी वजह से बाद में यह गड़बड़ी हो सकती है
कई बार कोशिश की जा सकती है.
गड़बड़ी को ठीक करने के लिए, Google Cloud Console से क्लाइंट सीक्रेट फ़ाइल डाउनलोड करें फिर से, और नई फ़ाइल को वर्तमान फ़ाइल के स्थान पर सेव करें.
मिलते-जुलते विषय
अगर आपके ऐप्लिकेशन को दायरे के बाहर उपयोगकर्ता टोकन का इस्तेमाल करना जारी रखना है सिंगल फ़्लो से, यह टोकन को स्टोर कर सकता है, ताकि बाद में उनका फिर से इस्तेमाल किया जा सके. इस मामले में, आपके ऐप्लिकेशन को उपयोगकर्ता टोकन को सुरक्षित रूप से हैंडल करने और रीफ़्रेश करने की ज़रूरत है टोकन रद्द करने और उसकी समयसीमा खत्म होने की जानकारी होती है. ज़्यादा जानकारी के लिए, यह देखें OAuth 2.0 के सबसे सही तरीकों की गाइड का इस्तेमाल करना.
जानें कि Chat API और क्या-क्या कर सकता है. इसके लिए, Chat API के बारे में दस्तावेज़.