इस रेफ़रंस में, Google 3P (तीसरे पक्ष की) अनुमति वाली JavaScript लाइब्रेरी एपीआई के बारे में बताया गया है. इसकी मदद से, Google के ऑथराइज़ेशन कोड लोड किए जा सकते हैं या टोकन ऐक्सेस किए जा सकते हैं.
तरीका: google.accounts.oauth2.initCodeClient
initCodeClient
तरीका, शुरू होने पर एक कोड क्लाइंट दिखाता है. इसमें,
कॉन्फ़िगरेशन पैरामीटर है.
google.accounts.oauth2.initCodeClient(config: CodeClientConfig)
डेटा टाइप: CodeClientConfig
नीचे दी गई टेबल में, CodeClientConfig
के डेटा टाइप की प्रॉपर्टी की सूची दी गई है.
प्रॉपर्टी | |
---|---|
client_id
|
ज़रूरी है. आपके ऐप्लिकेशन का क्लाइंट आईडी. आपको यह वैल्यू एपीआई कंसोल में मिलेगी. |
scope
|
ज़रूरी है. दायरों की स्पेस-डीलिमिटेड सूची, जो उन संसाधनों की पहचान करती है जिन्हें आपका ऐप्लिकेशन, उपयोगकर्ता की ओर से ऐक्सेस कर सकता है. ये वैल्यू, उस स्क्रीन के बारे में बताती हैं जो Google, उपयोगकर्ता को दिखाता है. |
include_granted_scopes |
ज़रूरी नहीं है. यह डिफ़ॉल्ट रूप से true पर सेट होती है. इससे ऐप्लिकेशन को इंंक्रीमेंटल का इस्तेमाल करने की अनुमति मिलती है
अतिरिक्त दायरों के ऐक्सेस का अनुरोध करने की अनुमति. अगर आपने सेट किया है, तो
इस पैरामीटर का मान false है और अनुमति देने का अनुरोध स्वीकार किया जाता है, इसके बाद
नया ऐक्सेस टोकन सिर्फ़ उन दायरे को कवर करेगा जिनके लिए scope ने अनुरोध किया था
इस CodeClientConfig में.
|
redirect_uri
|
रीडायरेक्ट UX के लिए ज़रूरी है. इससे यह तय होता है कि उपयोगकर्ता के ऑथराइज़ेशन फ़्लो को पूरा करने के बाद, एपीआई सर्वर, उपयोगकर्ता को कहां रीडायरेक्ट करता है. यह वैल्यू, OAuth 2.0 क्लाइंट के लिए, अनुमति वाले रीडायरेक्ट यूआरआई में से किसी एक से पूरी तरह मेल खानी चाहिए. इसे आपने एपीआई कंसोल में कॉन्फ़िगर किया है. साथ ही, यह वैल्यू हमारे रीडायरेक्ट यूआरआई की पुष्टि करने वाले नियमों के मुताबिक होनी चाहिए. पॉप-अप UX प्रॉपर्टी को अनदेखा कर देगा. |
callback |
पॉप-अप UX के लिए ज़रूरी है. यह JavaScript फ़ंक्शन, दिखाए गए कोड रिस्पॉन्स को मैनेज करता है. रीडायरेक्ट UX प्रॉपर्टी को अनदेखा कर देगा. |
state |
ज़रूरी नहीं. रीडायरेक्ट UX के लिए सुझाया गया. ऐसी किसी भी स्ट्रिंग वैल्यू के बारे में बताता है जिसका इस्तेमाल आपका ऐप्लिकेशन, अनुमति देने के आपके अनुरोध और अनुमति देने वाले सर्वर के रिस्पॉन्स के बीच की स्थिति को बनाए रखने के लिए करता है. |
enable_granular_consent |
ज़रूरी नहीं है. यह डिफ़ॉल्ट रूप से true पर सेट होती है. अगर false पर सेट किया गया है, तो Google खाते की अनुमतियों के बारे में ज़्यादा जानकारी
साल 2019 से पहले बनाए गए OAuth क्लाइंट आईडी के लिए, यह सुविधा बंद कर दी जाएगी. अगर enable_granular_consent और enable_serial_consent , दोनों सेट हैं, तो सिर्फ़ enable_granular_consent
वैल्यू लागू होगी और enable_serial_consent वैल्यू को अनदेखा कर दिया जाएगा.नए OAuth क्लाइंट आईडी पर कोई असर नहीं पड़ता, क्योंकि उनके लिए ज़्यादा जानकारी वाली अनुमतियां हमेशा चालू रहती हैं. |
enable_serial_consent |
अब सेवा में नहीं है, आपको इसके बजाय enable_granular_consent का इस्तेमाल करना चाहिए. यह
का enable_granular_consent जैसा ही असर होता है. मौजूदा ऐप्लिकेशन
जो enable_serial_consent का इस्तेमाल करते हैं, वे आगे भी जारी रख सकते हैं, लेकिन आप
में enable_granular_consent का उपयोग करने के लिए अपना कोड अपडेट करने के लिए प्रोत्साहित किया जाता है
ऐप्लिकेशन का अगला अपडेट.
|
login_hint |
ज़रूरी नहीं. अगर आपके ऐप्लिकेशन को पता है कि किस उपयोगकर्ता को अनुरोध की अनुमति देनी है, तो वह इस प्रॉपर्टी का इस्तेमाल करके, Google को लॉगिन संकेत दे सकता है. सफल होने पर, खाता चुनना छोड़ दिया जाता है. टारगेट उपयोगकर्ता का ईमेल पता या आईडी टोकन के सब फ़ील्ड की वैल्यू.
ज़्यादा जानकारी के लिए, POP Connect दस्तावेज़ में login_hint फ़ील्ड देखें.
|
hd |
ज़रूरी नहीं. अगर आपके ऐप्लिकेशन को यह पता है कि उपयोगकर्ता किस Workspace डोमेन का है, तो Google को संकेत देने के लिए इसका इस्तेमाल करें. सफल होने पर, दिए गए डोमेन के लिए उपयोगकर्ता खाते तक सीमित या पहले से चुने गए होते हैं.
ज़्यादा जानकारी के लिए, POP Connect दस्तावेज़ में hd फ़ील्ड देखें.
|
ux_mode |
ज़रूरी नहीं. अनुमति देने के फ़्लो के लिए इस्तेमाल किया जाने वाला UX मोड. डिफ़ॉल्ट रूप से, सहमति जताने वाला फ़्लो एक पॉप-अप विंडो में खुलेगा. मान्य वैल्यू, popup और redirect हैं.
|
select_account |
ज़रूरी नहीं, यह डिफ़ॉल्ट रूप से 'false' पर सेट होता है. उपयोगकर्ता को खाता चुनने का प्रॉम्प्ट भेजने वाली बूलियन वैल्यू. |
error_callback |
ज़रूरी नहीं. JavaScript फ़ंक्शन, जो OAuth का इस्तेमाल नहीं करने वाली कुछ गड़बड़ियों को ठीक करता है, जैसे कि
पॉप-अप विंडो नहीं खुल सकी; या तो OAuth के रिस्पॉन्स से पहले बंद हो जाता है
वापस किया गया.
इनपुट पैरामीटर का `टाइप` फ़ील्ड, पूरी वजह बताता है.
|
डेटा टाइप: CodeClient
क्लास में सिर्फ़ एक सार्वजनिक तरीका requestCode, जो OAuth 2.0 को शुरू करता है कोड UX फ़्लो.
interface CodeClient {
requestCode(): void;
}
डेटा टाइप: CodeResponse
आपके callback
तरीके में, CodeResponse
JavaScript ऑब्जेक्ट को पास किया जाएगा
पॉप-अप UX पर. रीडायरेक्ट UX में, CodeResponse
को यूआरएल के तौर पर पास किया जाएगा
पैरामीटर का इस्तेमाल करें.
नीचे दी गई टेबल में, CodeResponse
के डेटा टाइप की प्रॉपर्टी की सूची दी गई है.
प्रॉपर्टी | |
---|---|
code |
टोकन रिस्पॉन्स का ऑथराइज़ेशन कोड. |
scope |
दायरों की स्पेस-डीलिमिटेड सूची, जिसे उपयोगकर्ता अनुमति देता है. |
state |
वह स्ट्रिंग वैल्यू जिसका इस्तेमाल आपका ऐप्लिकेशन, अनुमति पाने के आपके अनुरोध और रिस्पॉन्स के बीच की स्थिति को बनाए रखने के लिए करता है. |
error |
ASCII में गड़बड़ी का एक कोड. |
error_description |
ज़्यादा जानकारी देने वाला ऐसा ASCII टेक्स्ट जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. इसका इस्तेमाल, गड़बड़ी को समझने में क्लाइंट डेवलपर की मदद करने के लिए किया जाता है. |
error_uri |
यूआरआई, गड़बड़ी के बारे में जानकारी देने वाले ऐसे वेब पेज की पहचान करता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. इसका इस्तेमाल, क्लाइंट डेवलपर को गड़बड़ी के बारे में ज़्यादा जानकारी देने के लिए किया जाता है. |
तरीका: google.accounts.oauth2.initTokenClient
initTokenClient
तरीका, टोकन क्लाइंट को शुरू करता है और वैल्यू के तौर पर दिखाता है. इसमें
पैरामीटर में कॉन्फ़िगरेशन की ज़रूरत है.
google.accounts.oauth2.initTokenClient(config: TokenClientConfig)
डेटा टाइप: TokenClientConfig
नीचे दी गई टेबल में, TokenClientConfig
के डेटा टाइप की प्रॉपर्टी की सूची दी गई है.
प्रॉपर्टी | |
---|---|
client_id |
ज़रूरी है. आपके ऐप्लिकेशन का क्लाइंट आईडी. आपको यह वैल्यू एपीआई कंसोल में मिलेगी. |
callback |
ज़रूरी है. यह JavaScript फ़ंक्शन, दिखाए गए टोकन रिस्पॉन्स को मैनेज करता है. |
scope |
ज़रूरी है. दायरों की स्पेस-डीलिमिटेड सूची, जो उन संसाधनों की पहचान करती है जिन्हें आपका ऐप्लिकेशन, उपयोगकर्ता की ओर से ऐक्सेस कर सकता है. ये वैल्यू, उस स्क्रीन के बारे में बताती हैं जो Google, उपयोगकर्ता को दिखाता है. |
include_granted_scopes |
ज़रूरी नहीं है. यह डिफ़ॉल्ट रूप से true पर सेट होती है. इससे ऐप्लिकेशन को इंंक्रीमेंटल का इस्तेमाल करने की अनुमति मिलती है
अतिरिक्त दायरों के ऐक्सेस का अनुरोध करने की अनुमति. अगर आपने सेट किया है, तो
इस पैरामीटर का मान false है और अनुमति देने का अनुरोध स्वीकार किया जाता है, इसके बाद
नया ऐक्सेस टोकन सिर्फ़ उन दायरे को कवर करेगा जिनके लिए scope ने अनुरोध किया था
इस TokenClientConfig में.
|
prompt |
ज़रूरी नहीं, यह डिफ़ॉल्ट रूप से 'select_account' होता है. स्पेस-डीलिमिटेड,
उपयोगकर्ता को दिखाए जाने वाले प्रॉम्प्ट की केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) सूची. आपको ये वैल्यू दिख सकती हैं:
|
enable_granular_consent |
ज़रूरी नहीं है. यह डिफ़ॉल्ट रूप से true पर सेट होती है. अगर false पर सेट किया गया है, तो Google खाते की अनुमतियों के बारे में ज़्यादा जानकारी
साल 2019 से पहले बनाए गए OAuth क्लाइंट आईडी के लिए, यह सुविधा बंद कर दी जाएगी. अगर enable_granular_consent और enable_serial_consent , दोनों सेट हैं, तो सिर्फ़ enable_granular_consent
वैल्यू लागू होगी और enable_serial_consent वैल्यू को अनदेखा कर दिया जाएगा.नए OAuth क्लाइंट आईडी पर कोई असर नहीं पड़ता, क्योंकि उनके लिए ज़्यादा जानकारी वाली अनुमतियां हमेशा चालू रहती हैं. |
enable_serial_consent |
अब सेवा में नहीं है, आपको इसके बजाय enable_granular_consent का इस्तेमाल करना चाहिए. यह
का enable_granular_consent जैसा ही असर होता है. मौजूदा ऐप्लिकेशन
जो enable_serial_consent का इस्तेमाल करते हैं, वे आगे भी जारी रख सकते हैं, लेकिन आप
में enable_granular_consent का उपयोग करने के लिए अपना कोड अपडेट करने के लिए प्रोत्साहित किया जाता है
ऐप्लिकेशन का अगला अपडेट.
|
login_hint |
ज़रूरी नहीं. अगर आपके ऐप्लिकेशन को पता है कि किस उपयोगकर्ता को अनुरोध की अनुमति देनी है, तो वह इस प्रॉपर्टी का इस्तेमाल करके, Google को लॉगिन संकेत दे सकता है. सफल होने पर, खाता चुनना छोड़ दिया जाता है. टारगेट उपयोगकर्ता का ईमेल पता या आईडी टोकन के सब फ़ील्ड की वैल्यू.
ज़्यादा जानकारी के लिए, POP Connect दस्तावेज़ में login_hint फ़ील्ड देखें.
|
hd |
ज़रूरी नहीं. अगर आपके ऐप्लिकेशन को यह पता है कि उपयोगकर्ता किस Workspace डोमेन का है, तो Google को संकेत देने के लिए इसका इस्तेमाल करें. सफल होने पर, दिए गए डोमेन के लिए उपयोगकर्ता खाते तक सीमित या पहले से चुने गए होते हैं.
ज़्यादा जानकारी के लिए, POP Connect दस्तावेज़ में hd फ़ील्ड देखें.
|
state |
ज़रूरी नहीं. इसे इस्तेमाल करने का सुझाव नहीं दिया जाता है. ऐसी किसी भी स्ट्रिंग वैल्यू के बारे में बताता है जिसका इस्तेमाल आपका ऐप्लिकेशन, अनुमति देने के आपके अनुरोध और अनुमति देने वाले सर्वर के रिस्पॉन्स के बीच की स्थिति को बनाए रखने के लिए करता है. |
error_callback |
ज़रूरी नहीं. JavaScript फ़ंक्शन, जो OAuth का इस्तेमाल नहीं करने वाली कुछ गड़बड़ियों को ठीक करता है, जैसे कि
पॉप-अप विंडो नहीं खुल सकी; या तो OAuth के रिस्पॉन्स से पहले बंद हो जाता है
वापस किया गया.
इनपुट पैरामीटर का `टाइप` फ़ील्ड, पूरी वजह बताता है.
|
डेटा टाइप: TokenClient
क्लास में सिर्फ़ एक सार्वजनिक तरीका requestAccessToken
होता है, जो
OAuth 2.0 टोकन UX फ़्लो.
interface TokenClient {
requestAccessToken(overrideConfig?: OverridableTokenClientConfig): void;
}
तर्क | ||
---|---|---|
overrideConfig |
OverridableTokenClientConfig | ज़रूरी नहीं. इस तरीके में बदले जाने वाले कॉन्फ़िगरेशन. |
डेटा टाइप: OverridableTokenClientConfig
नीचे दी गई टेबल में, OverridableTokenClientConfig
की प्रॉपर्टी की सूची दी गई है
डेटा टाइप.
प्रॉपर्टी | |
---|---|
scope |
ज़रूरी नहीं. दायरों की स्पेस-डीलिमिटेड सूची, जो संसाधनों की पहचान करती है आपका ऐप्लिकेशन उपयोगकर्ता की ओर से ऐक्सेस कर सकता है. ये वैल्यू उस स्क्रीन की जानकारी देनी होगी जो Google, उपयोगकर्ता को दिखाता है. |
include_granted_scopes |
ज़रूरी नहीं है. यह डिफ़ॉल्ट रूप से true पर सेट होती है. इससे ऐप्लिकेशन को इंंक्रीमेंटल का इस्तेमाल करने की अनुमति मिलती है
अतिरिक्त दायरों के ऐक्सेस का अनुरोध करने की अनुमति. अगर आपने सेट किया है, तो
इस पैरामीटर का मान false है और अनुमति देने का अनुरोध स्वीकार किया जाता है, इसके बाद
नया ऐक्सेस टोकन सिर्फ़ उन दायरे को कवर करेगा जिनके लिए scope ने अनुरोध किया था
इस OverridableTokenClientConfig में.
|
prompt |
ज़रूरी नहीं. उपयोगकर्ता को दिखाने के लिए प्रॉम्प्ट की स्पेस-डीलिमिटेड, केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) सूची. |
enable_granular_consent |
ज़रूरी नहीं है. यह डिफ़ॉल्ट रूप से true पर सेट होती है. अगर false पर सेट किया गया है, तो Google खाते की अनुमतियों के बारे में ज़्यादा जानकारी
साल 2019 से पहले बनाए गए OAuth क्लाइंट आईडी के लिए, यह सुविधा बंद कर दी जाएगी.अगर enable_granular_consent और enable_serial_consent , दोनों को सेट किया जाता है, तो सिर्फ़ enable_granular_consent
वैल्यू लागू होगी और enable_serial_consent वैल्यू को अनदेखा कर दिया जाएगा.नए OAuth क्लाइंट आईडी पर कोई असर नहीं पड़ता, क्योंकि उनके लिए ज़्यादा जानकारी वाली अनुमतियां हमेशा चालू रहती हैं. |
enable_serial_consent |
अब सेवा में नहीं है, आपको इसके बजाय enable_granular_consent का इस्तेमाल करना चाहिए. यह
का enable_granular_consent जैसा ही असर होता है. मौजूदा ऐप्लिकेशन
जो enable_serial_consent का इस्तेमाल करते हैं, वे आगे भी जारी रख सकते हैं, लेकिन आप
में enable_granular_consent का उपयोग करने के लिए अपना कोड अपडेट करने के लिए प्रोत्साहित किया जाता है
ऐप्लिकेशन का अगला अपडेट.
|
login_hint |
ज़रूरी नहीं. अगर आपके ऐप्लिकेशन को पता है कि किस उपयोगकर्ता को अनुरोध की अनुमति देनी है, तो वह इस प्रॉपर्टी का इस्तेमाल करके, Google को लॉगिन संकेत दे सकता है. सफल होने पर, खाता चुनना छोड़ दिया जाता है. टारगेट उपयोगकर्ता का ईमेल पता या आईडी टोकन के सब फ़ील्ड की वैल्यू.
ज़्यादा जानकारी के लिए, POP Connect दस्तावेज़ में login_hint फ़ील्ड देखें.
|
state |
ज़रूरी नहीं. इसे इस्तेमाल करने का सुझाव नहीं दिया जाता है. ऐसी किसी भी स्ट्रिंग वैल्यू के बारे में बताता है जिसका इस्तेमाल आपका ऐप्लिकेशन, अनुमति देने के आपके अनुरोध और अनुमति देने वाले सर्वर के रिस्पॉन्स के बीच की स्थिति को बनाए रखने के लिए करता है. |
डेटा टाइप: TokenResponse
आपके कॉलबैक तरीके में, TokenResponse
JavaScript ऑब्जेक्ट पास किया जाएगा
पॉप-अप UX पर.
नीचे दी गई टेबल में, TokenResponse
के डेटा टाइप की प्रॉपर्टी की सूची दी गई है.
प्रॉपर्टी | |
---|---|
access_token |
टोकन रिस्पॉन्स का ऐक्सेस टोकन. |
expires_in |
ऐक्सेस टोकन की लाइफ़टाइम वैल्यू. |
hd |
वह होस्ट किया गया डोमेन जिससे साइन-इन किया गया उपयोगकर्ता जुड़ा है. |
prompt |
TokenClientConfig या OverridableTokenClientConfig की तय की गई वैल्यू की संभावित सूची से मिली प्रॉम्प्ट वैल्यू. |
token_type |
जारी किए गए टोकन का टाइप. |
scope |
दायरों की स्पेस-डीलिमिटेड सूची, जिसे उपयोगकर्ता अनुमति देता है. |
state |
वह स्ट्रिंग वैल्यू जिसका इस्तेमाल आपका ऐप्लिकेशन, अनुमति पाने के आपके अनुरोध और रिस्पॉन्स के बीच की स्थिति को बनाए रखने के लिए करता है. |
error |
ASCII से जुड़ा सिर्फ़ एक गड़बड़ी कोड. |
error_description |
ज़्यादा जानकारी देने वाला ऐसा ASCII टेक्स्ट जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. इसका इस्तेमाल, गड़बड़ी को समझने में क्लाइंट डेवलपर की मदद करने के लिए किया जाता है. |
error_uri |
यूआरआई, गड़बड़ी के बारे में जानकारी देने वाले ऐसे वेब पेज की पहचान करता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. इसका इस्तेमाल, क्लाइंट डेवलपर को गड़बड़ी के बारे में ज़्यादा जानकारी देने के लिए किया जाता है. |
तरीका: google.accounts.oauth2.hasgrantedAllScopes
यह जांच करता है कि उपयोगकर्ता ने सभी खास दायरे या दायरों को अनुमति दी है या नहीं.
google.accounts.oauth2.hasGrantedAllScopes(
tokenResponse: TokenResponse,
firstScope: string, ...restScopes: string[]
): boolean;
तर्क | ||
---|---|---|
tokenResponse |
TokenResponse
|
ज़रूरी है. TokenResponse
ऑब्जेक्ट है.
|
firstScope |
स्ट्रिंग | ज़रूरी है. वह दायरा जिसकी जांच करनी है. |
restScopes |
स्ट्रिंग[] | ज़रूरी नहीं. ऐसे अन्य दायरे जिन्हें जांचना चाहिए. |
रिटर्न | |
---|---|
बूलियन | अगर सभी दायरों की अनुमति दी गई हो, तो वैल्यू 'सही' होगी. |
तरीका: google.accounts.oauth2.hasgrantedAnyScope
यह जांचता है कि उपयोगकर्ता ने कोई खास स्कोप या स्कोप दिया है या नहीं.
google.accounts.oauth2.hasGrantedAnyScope(
tokenResponse: TokenResponse,
firstScope: string, ...restScopes: string[]
): boolean;
तर्क | ||
---|---|---|
tokenResponse |
TokenResponse
|
ज़रूरी है. TokenResponse
ऑब्जेक्ट है.
|
firstScope |
स्ट्रिंग | ज़रूरी है. वह दायरा जिसकी जांच करनी है. |
restScopes |
स्ट्रिंग[] | ज़रूरी नहीं. ऐसे अन्य दायरे जिन्हें जांचना चाहिए. |
रिटर्न | |
---|---|
बूलियन | अगर कोई स्कोप दिया गया हो, तो वैल्यू 'सही' होगी. |
तरीका: google.accounts.oauth2.Revoke
revoke
तरीका, उन सभी दायरों को रद्द कर देता है जिन्हें उपयोगकर्ता ने ऐप्लिकेशन को दिया है.
अनुमति रद्द करने के लिए, मान्य ऐक्सेस टोकन ज़रूरी है.
google.accounts.oauth2.revoke(accessToken: string, done: () => void): void;
तर्क | ||
---|---|---|
accessToken |
स्ट्रिंग | ज़रूरी है. मान्य ऐक्सेस टोकन. |
callback |
फ़ंक्शन | ज़रूरी नहीं. RevocationResponse हैंडलर. |
डेटा टाइप: RevocationResponse
आपके कॉलबैक के तरीके में, RevocationResponse
JavaScript ऑब्जेक्ट पास किया जाएगा.
नीचे दी गई टेबल में, RevocationResponse
के डेटा टाइप की प्रॉपर्टी की सूची दी गई है.
प्रॉपर्टी | |
---|---|
successful |
बूलियन. सफल होने पर true , गड़बड़ी होने पर false . |
error |
स्ट्रिंग. सफलता को लेकर अनिश्चित. ASCII में गड़बड़ी का एक कोड. इसमें स्टैंडर्ड OAuth के अलावा, और भी चीज़ें शामिल हो सकती हैं
2.0 गड़बड़ी कोड. revoke तरीके में आम तौर पर होने वाली गड़बड़ियां:
|
error_description |
स्ट्रिंग. सफलता को लेकर अनिश्चित. लोग आसानी से पढ़ सकते हैं ASCII टेक्स्ट
error प्रॉपर्टी. डेवलपर इसका इस्तेमाल,
कोई गड़बड़ी हुई है. error_description स्ट्रिंग सिर्फ़ अंग्रेज़ी में है.
error में बताई गई, error_description से जुड़ी सामान्य गड़बड़ियों के लिए:
|