refresh date: 2026-09-25 robots: noindex
ब्यौरा
chrome.permissions एपीआई का इस्तेमाल करके, ऐप्लिकेशन इंस्टॉल करते समय नहीं, बल्कि उसे इस्तेमाल करते समय, ज़रूरी अनुमतियों के अलावा अन्य अनुमतियों का अनुरोध करें. इससे उपयोगकर्ताओं को यह समझने में मदद मिलती है कि अनुमतियों की ज़रूरत क्यों है और वे सिर्फ़ ज़रूरी अनुमतियां देते हैं.
खास जानकारी
अनुमति से जुड़ी चेतावनियां, एपीआई से मिलने वाली सुविधाओं के बारे में बताती हैं. हालांकि, इनमें से कुछ चेतावनियां साफ़ तौर पर समझ नहीं आतीं. अनुमतियों से जुड़ा एपीआई, डेवलपर को अनुमति से जुड़ी चेतावनियों के बारे में बताने और धीरे-धीरे नई सुविधाएं लॉन्च करने की अनुमति देता है. इससे उपयोगकर्ताओं को एक्सटेंशन के बारे में बिना किसी जोखिम के जानकारी मिलती है. इससे उपयोगकर्ता यह तय कर सकते हैं कि उन्हें कितना ऐक्सेस देना है और कौनसी सुविधाएं चालू करनी हैं.
उदाहरण के लिए, वैकल्पिक अनुमतियों वाले एक्सटेंशन का मुख्य फ़ंक्शन, 'नया टैब' पेज को बदलना है. एक सुविधा, उपयोगकर्ता के दिन के लक्ष्य को दिखा रही है. इस सुविधा के लिए, सिर्फ़ स्टोरेज की अनुमति ज़रूरी है. इसके लिए, कोई चेतावनी नहीं दी जाती. एक्सटेंशन में एक अतिरिक्त सुविधा है. उपयोगकर्ता, इस बटन पर क्लिक करके उसे चालू कर सकते हैं:

उपयोगकर्ता की सबसे ज़्यादा विज़िट की गई साइटें दिखाने के लिए, topSites अनुमति की ज़रूरत होती है. इसके लिए, यह चेतावनी दी जाती है.

वैकल्पिक अनुमतियां लागू करना
पहला चरण: तय करें कि कौनसी अनुमतियां ज़रूरी हैं और कौनसी वैकल्पिक हैं
कोई एक्सटेंशन, ज़रूरी और वैकल्पिक, दोनों तरह की अनुमतियों का एलान कर सकता है. आम तौर पर, आपको:
- जब आपके एक्सटेंशन के बुनियादी फ़ंक्शन के लिए ज़रूरी हो, तब ही ज़रूरी अनुमतियों का इस्तेमाल करें.
- जब आपके एक्सटेंशन में मौजूद वैकल्पिक सुविधाओं के लिए ज़रूरी हो, तब वैकल्पिक अनुमतियों का इस्तेमाल करें.
ज़रूरी अनुमतियों के फ़ायदे:
- कम प्रॉम्प्ट: कोई एक्सटेंशन, उपयोगकर्ता को सभी अनुमतियां स्वीकार करने के लिए एक बार प्रॉम्प्ट कर सकता है.
- डेवलपमेंट आसान हो जाता है: ज़रूरी अनुमतियां पहले से मौजूद होती हैं.
ज़रूरी नहीं अनुमतियों के फ़ायदे:
- बेहतर सुरक्षा: एक्सटेंशन कम अनुमतियों के साथ काम करते हैं, क्योंकि उपयोगकर्ता सिर्फ़ ज़रूरी अनुमतियां चालू करते हैं.
- उपयोगकर्ताओं को बेहतर जानकारी मिलती है: जब उपयोगकर्ता किसी सुविधा को चालू करता है, तो एक्सटेंशन यह बता सकता है कि उसे किसी खास अनुमति की ज़रूरत क्यों है.
- आसान अपग्रेड: जब एक्सटेंशन को अपग्रेड किया जाता है, तो Chrome उसे आपके उपयोगकर्ताओं के लिए बंद नहीं करेगा. ऐसा तब होगा, जब अपग्रेड में ज़रूरी अनुमतियों के बजाय वैकल्पिक अनुमतियां जोड़ी जाएंगी.
दूसरा चरण: मेनिफ़ेस्ट में वैकल्पिक अनुमतियों का एलान करना
अपने एक्सटेंशन मेनिफ़ेस्ट में, optional_permissions कुंजी के साथ वैकल्पिक अनुमतियों का एलान करें. इसके लिए, अनुमतियां फ़ील्ड वाले फ़ॉर्मैट का ही इस्तेमाल करें:
{
"name": "My extension",
...
"optional_permissions": ["tabs"],
"optional_host_permissions": ["https://www.google.com/"],
...
}
अगर आपको ऐसे होस्ट का अनुरोध करना है जो सिर्फ़ रनटाइम के दौरान मिलते हैं, तो अपने एक्सटेंशन के optional_host_permissions फ़ील्ड में "https://*/*" शामिल करें. इससे आपको Permissions.origins में किसी भी ऑरिजिन की जानकारी देने की सुविधा मिलती है. हालांकि, इसके लिए ज़रूरी है कि उसका स्कीम मैच हो.
ऐसी अनुमतियां जिन्हें वैकल्पिक के तौर पर तय नहीं किया जा सकता
Chrome एक्सटेंशन की ज़्यादातर अनुमतियों को 'ज़रूरी नहीं है' के तौर पर मार्क किया जा सकता है. हालांकि, इन अनुमतियों को मार्क नहीं किया जा सकता.
| अनुमति | ब्यौरा |
|---|---|
"debugger" |
chrome.debugger एपीआई, Chrome के रिमोट डीबगिंग प्रोटोकॉल के लिए, ट्रांसपोर्ट के वैकल्पिक तरीके के तौर पर काम करता है. |
"declarativeNetRequest" |
एक्सटेंशन को chrome.declarativeNetRequest API का ऐक्सेस देता है. |
"devtools" |
एक्सटेंशन को Chrome DevTools की सुविधाओं को बढ़ाने की अनुमति देता है. |
"experimental" |
सिर्फ़ कैनरी और डेव चैनल. एक्सटेंशन को chrome.experimental एपीआई का ऐक्सेस देता है. |
"geolocation" |
एक्सटेंशन को HTML5 जियोलोकेशन एपीआई इस्तेमाल करने की अनुमति देता है. |
"mdns" |
एक्सटेंशन को chrome.mdns एपीआई को ऐक्सेस करने की अनुमति देता है. |
"proxy" |
यह एक्सटेंशन को chrome.proxy एपीआई का ऐक्सेस देता है, ताकि Chrome की प्रॉक्सी सेटिंग को मैनेज किया जा सके. |
"tts" |
chrome.tts एपीआई, लिखे गए शब्दों को सुनने की सुविधा (टीटीएस) को सिंथेसाइज़ करके चलाता है. |
"ttsEngine" |
chrome.ttsEngine एपीआई, एक्सटेंशन का इस्तेमाल करके, लिखाई को बोली में बदलने (टीटीएस) की सुविधा लागू करता है. |
"wallpaper" |
सिर्फ़ ChromeOS के लिए. ChromeOS का वॉलपेपर बदलने के लिए, chrome.wallpaper एपीआई का इस्तेमाल करें. |
उपलब्ध अनुमतियों और उनकी चेतावनियों के बारे में ज़्यादा जानकारी के लिए, अनुमतियों का एलान करना और उपयोगकर्ताओं को चेतावनी देना देखें.
तीसरा चरण: वैकल्पिक अनुमतियों का अनुरोध करना
permissions.request() का इस्तेमाल करके, उपयोगकर्ता के जेस्चर से अनुमतियों का अनुरोध करें:
document.querySelector('#my-button').addEventListener('click', (event) => {
// Permissions must be requested from inside a user gesture, like a button's
// click handler.
chrome.permissions.request({
permissions: ['tabs'],
origins: ['https://www.google.com/']
}, (granted) => {
// The callback argument will be true if the user granted the permissions.
if (granted) {
doSomething();
} else {
doSomethingElse();
}
});
});
अगर अनुमतियां जोड़ने पर, उपयोगकर्ता को पहले से देखे और स्वीकार किए गए चेतावनी वाले मैसेज से अलग मैसेज दिखते हैं, तो Chrome उपयोगकर्ता को इसकी सूचना देता है. उदाहरण के लिए, पिछले कोड की वजह से इस तरह का प्रॉम्प्ट दिख सकता है:

चौथा चरण: एक्सटेंशन की मौजूदा अनुमतियां देखना
यह देखने के लिए कि आपके एक्सटेंशन के पास कोई खास अनुमति या अनुमतियों का सेट है या नहीं, permission.contains() का इस्तेमाल करें:
chrome.permissions.contains({
permissions: ['tabs'],
origins: ['https://www.google.com/']
}, (result) => {
if (result) {
// The extension has the permissions.
} else {
// The extension doesn't have the permissions.
}
});
पांचवां चरण: अनुमतियां हटाना
जब आपको अनुमतियों की ज़रूरत न हो, तो उन्हें हटा दें. अनुमति हटाए जाने के बाद, permissions.request() को कॉल करने पर, आम तौर पर उपयोगकर्ता को सूचना दिए बिना ही अनुमति वापस जोड़ दी जाती है.
chrome.permissions.remove({
permissions: ['tabs'],
origins: ['https://www.google.com/']
}, (removed) => {
if (removed) {
// The permissions have been removed.
} else {
// The permissions have not been removed (e.g., you tried to remove
// required permissions).
}
});
टाइप
Permissions
प्रॉपर्टी
-
origins
string[] ज़रूरी नहीं
होस्ट की अनुमतियों की सूची. इसमें मेनिफ़ेस्ट में
optional_permissionsयाpermissionsकुंजियों में बताई गई अनुमतियां और कॉन्टेंट स्क्रिप्ट से जुड़ी अनुमतियां शामिल हैं. -
अनुमतियां
string[] ज़रूरी नहीं
नाम वाली अनुमतियों की सूची (इसमें होस्ट या ऑरिजिन शामिल नहीं हैं).
तरीके
contains()
chrome.permissions.contains(
permissions: Permissions,
callback?: function,
): Promise<boolean>
यह जांच करता है कि एक्सटेंशन के पास बताई गई अनुमतियां हैं या नहीं.
पैरामीटर
-
अनुमतियां
-
कॉलबैक
function ज़रूरी नहीं
callbackपैरामीटर कुछ ऐसा दिखता है:(result: boolean) => void
-
नतीजा
बूलियन
अगर एक्सटेंशन के पास बताई गई अनुमतियां हैं, तो True. अगर किसी ऑरिजिन को वैकल्पिक अनुमति और कॉन्टेंट स्क्रिप्ट मैच पैटर्न, दोनों के तौर पर तय किया गया है, तो यह
falseदिखाएगा. हालांकि, ऐसा तब होगा, जब दोनों अनुमतियां न दी गई हों.
-
रिटर्न
-
Promise<boolean>
Chrome 96+प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
getAll()
chrome.permissions.getAll(
callback?: function,
): Promise<Permissions>
इससे एक्सटेंशन को मिली अनुमतियों के मौजूदा सेट की जानकारी मिलती है.
पैरामीटर
-
कॉलबैक
function ज़रूरी नहीं
callbackपैरामीटर कुछ ऐसा दिखता है:(permissions: Permissions) => void
-
अनुमतियां
एक्सटेंशन की चालू अनुमतियां. ध्यान दें कि
originsप्रॉपर्टी में, मेनिफ़ेस्ट मेंpermissionsऔरoptional_permissionsकुंजियों में बताए गए ऑरिजिन और कॉन्टेंट स्क्रिप्ट से जुड़े ऑरिजिन शामिल होंगे.
-
रिटर्न
-
Promise<Permissions>
Chrome 96+प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
remove()
chrome.permissions.remove(
permissions: Permissions,
callback?: function,
): Promise<boolean>
इससे, चुनी गई अनुमतियों का ऐक्सेस हट जाता है. अगर अनुमतियां हटाने में कोई समस्या आती है, तो प्रॉमिस को अस्वीकार कर दिया जाएगा.
पैरामीटर
-
अनुमतियां
-
कॉलबैक
function ज़रूरी नहीं
callbackपैरामीटर कुछ ऐसा दिखता है:(removed: boolean) => void
-
निकाला गया
बूलियन
अगर अनुमतियां हटा दी गई हैं, तो True दिखेगा.
-
रिटर्न
-
Promise<boolean>
Chrome 96+प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
request()
chrome.permissions.request(
permissions: Permissions,
callback?: function,
): Promise<boolean>
यह तय की गई अनुमतियों के ऐक्सेस का अनुरोध करता है. साथ ही, ज़रूरत पड़ने पर उपयोगकर्ता को एक प्रॉम्प्ट दिखाता है. इन अनुमतियों को मेनिफ़ेस्ट के optional_permissions फ़ील्ड में तय किया जाना चाहिए या ये ऐसी ज़रूरी अनुमतियां होनी चाहिए जिन्हें उपयोगकर्ता ने नहीं दिया है. ऑरिजिन पैटर्न में दिए गए पाथ को अनदेखा किया जाएगा. आपके पास वैकल्पिक ऑरिजिन अनुमतियों के सबसेट का अनुरोध करने का विकल्प होता है. उदाहरण के लिए, अगर मेनिफ़ेस्ट के optional_permissions सेक्शन में *://*\/* तय किया जाता है, तो http://example.com/ का अनुरोध किया जा सकता है. अगर अनुमतियों का अनुरोध करने में कोई समस्या आती है, तो प्रॉमिस को अस्वीकार कर दिया जाएगा.
पैरामीटर
-
अनुमतियां
-
कॉलबैक
function ज़रूरी नहीं
callbackपैरामीटर कुछ ऐसा दिखता है:(granted: boolean) => void
-
अनुमति दी गई
बूलियन
अगर उपयोगकर्ता ने बताई गई अनुमतियां दी हैं, तो True.
-
रिटर्न
-
Promise<boolean>
Chrome 96+प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
इवेंट
onAdded
chrome.permissions.onAdded.addListener(
callback: function,
)
एक्सटेंशन को नई अनुमतियां मिलने पर ट्रिगर होता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:(permissions: Permissions) => void
-
अनुमतियां
-
onRemoved
chrome.permissions.onRemoved.addListener(
callback: function,
)
यह तब ट्रिगर होता है, जब एक्सटेंशन से अनुमतियों का ऐक्सेस हटा दिया जाता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:(permissions: Permissions) => void
-
अनुमतियां
-