chrome.permissions

refresh date: 2026-09-25 robots: noindex

ब्यौरा

chrome.permissions एपीआई का इस्तेमाल करके, इंस्टॉल करने के समय के बजाय रन टाइम पर ऐच्छिक तौर पर मांगी गई अनुमतियों का अनुरोध करें. इससे लोगों को यह समझने में मदद मिलेगी कि अनुमतियों की ज़रूरत क्यों है. साथ ही, वे सिर्फ़ ज़रूरी अनुमतियां दे पाएंगे.

खास जानकारी

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

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

एक्सटेंशन बटन, जो अतिरिक्त सुविधाएं चालू करता है

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

topSites API के लिए एक्सटेंशन की चेतावनी

अनुमति ज़रूरी नहीं है

पहला चरण: तय करें कि कौनसी अनुमतियां ज़रूरी हैं और कौनसी वैकल्पिक

एक्सटेंशन, ज़रूरी और वैकल्पिक, दोनों तरह की अनुमतियों के बारे में बता सकता है. सामान्य तौर पर, आपको:

  • जब आपके एक्सटेंशन के बुनियादी फ़ंक्शन के लिए ज़रूरी हो, तब ज़रूरी अनुमतियों का इस्तेमाल करें.
  • जब आपके एक्सटेंशन में मौजूद वैकल्पिक सुविधाओं के लिए अनुमतियों की ज़रूरत हो, तब वैकल्पिक अनुमतियों का इस्तेमाल करें.

ज़रूरी अनुमतियों के फ़ायदे:

  • कम प्रॉम्प्ट: एक्सटेंशन, उपयोगकर्ता को सभी अनुमतियां स्वीकार करने के लिए एक बार प्रॉम्प्ट कर सकता है.
  • आसानी से डेवलपमेंट: ज़रूरी अनुमतियां मौजूद होने की गारंटी होती है.

ज़रूरी नहीं के तौर पर सेट की गई अनुमतियों के फ़ायदे:

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

दूसरा चरण: मेनिफ़ेस्ट में, ज़रूरी नहीं है कि अनुमतियों का एलान किया जाए

एक्सटेंशन मेनिफ़ेस्ट में, optional_permissions कुंजी का इस्तेमाल करके, वैकल्पिक अनुमतियों का एलान करें. इसके लिए, permissions फ़ील्ड के फ़ॉर्मैट का इस्तेमाल करें:

{
  "name": "My extension",
  ...
  "optional_permissions": ["tabs"],
  "optional_host_permissions": ["https://www.google.com/"],
  ...
}

अगर आपको ऐसे होस्ट के लिए अनुरोध करना है जिनके बारे में आपको सिर्फ़ रनटाइम पर पता चलता है, तो अपने एक्सटेंशन के optional_host_permissions फ़ील्ड में "https://*/*" शामिल करें. इससे, Permissions.origins में किसी भी ऑरिजिन को तय किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि उसका स्कीम मैच करता हो.

ऐसी अनुमतियां जिन्हें 'ज़रूरी नहीं है' के तौर पर नहीं चुना जा सकता

Chrome एक्सटेंशन की ज़्यादातर अनुमतियों को 'ज़रूरी नहीं है' के तौर पर सेट किया जा सकता है. हालांकि, इन अनुमतियों को 'ज़रूरी है' के तौर पर सेट करना होगा.

अनुमति ब्यौरा
"debugger" chrome.debugger API, Chrome के रिमोट डीबगिंग प्रोटोकॉल के लिए एक वैकल्पिक ट्रांसपोर्ट के तौर पर काम करता है.
"declarativeNetRequest" इससे एक्सटेंशन को chrome.declarativeNetRequest API का ऐक्सेस मिलता है.
"devtools" इस कुकी से एक्सटेंशन को Chrome DevTools की सुविधाओं को बढ़ाने की अनुमति मिलती है.
"experimental" सिर्फ़ Canary और डेव चैनल पर उपलब्ध है. इस अनुमति से एक्सटेंशन को chrome.experimental एपीआई का ऐक्सेस मिलता है.
"geolocation" इस अनुमति से एक्सटेंशन, HTML5 जियोलोकेशन एपीआई का इस्तेमाल कर सकता है.
"mdns" इस अनुमति से एक्सटेंशन को chrome.mdns एपीआई को ऐक्सेस करने की अनुमति मिलती है.
"proxy" इस अनुमति से एक्सटेंशन को chrome.proxy एपीआई का ऐक्सेस मिलता है. इससे वह Chrome की प्रॉक्सी सेटिंग मैनेज कर पाता है.
"tts" chrome.tts एपीआई, सिंथेसाइज़ किए गए टेक्स्ट को बोली में बदलने (टीटीएस) की सुविधा देता है.
"ttsEngine" chrome.ttsEngine API, एक्सटेंशन का इस्तेमाल करके, लिखाई को बोली में बदलने (टीटीएस) वाला इंजन लागू करता है.
"wallpaper" सिर्फ़ ChromeOS के लिए. ChromeOS का वॉलपेपर बदलने के लिए, chrome.wallpaper API का इस्तेमाल करें.

उपलब्ध अनुमतियों और उनसे जुड़ी चेतावनियों के बारे में ज़्यादा जानने के लिए, अनुमतियों का एलान करें और उपयोगकर्ताओं को चेतावनी दें लेख पढ़ें.

तीसरा चरण: वैकल्पिक अनुमतियों का अनुरोध करना

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

प्रॉपर्टी

  • ओरिजन

    string[] ज़रूरी नहीं है

    होस्ट की अनुमतियों की सूची. इसमें मेनिफ़ेस्ट में optional_permissions या permissions कुंजियों में दी गई अनुमतियां और कॉन्टेंट स्क्रिप्ट से जुड़ी अनुमतियां शामिल हैं.

  • अनुमतियां

    string[] ज़रूरी नहीं है

    नाम वाली अनुमतियों की सूची. इसमें होस्ट या ऑरिजिन शामिल नहीं हैं.

तरीके

contains()

Promise
chrome.permissions.contains(
  permissions: Permissions,
  callback?: function,
)
: Promise<boolean>

यह कुकी, यह जांच करती है कि एक्सटेंशन के पास बताई गई अनुमतियां हैं या नहीं.

पैरामीटर

  • अनुमतियां
  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं है

    callback पैरामीटर ऐसा दिखता है:

    (result: boolean) => void

    • नतीजा

      बूलियन

      अगर एक्सटेंशन के पास बताई गई अनुमतियां हैं, तो यह वैल्यू सही होती है. अगर किसी ऑरिजिन को वैकल्पिक अनुमति और कॉन्टेंट स्क्रिप्ट मैच पैटर्न, दोनों के तौर पर सेट किया गया है, तो दोनों अनुमतियां मिलने तक यह false दिखाएगा.

रिटर्न

  • Promise<boolean>

    Chrome 96 और इसके बाद के वर्शन

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.

getAll()

Promise
chrome.permissions.getAll(
  callback?: function,
)
: Promise<Permissions>

एक्सटेंशन के लिए अनुमतियों का मौजूदा सेट मिलता है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं है

    callback पैरामीटर ऐसा दिखता है:

    (permissions: Permissions) => void

    • अनुमतियां

      एक्सटेंशन की चालू अनुमतियां. ध्यान दें कि origins प्रॉपर्टी में, मेनिफ़ेस्ट में दी गई permissions और optional_permissions कुंजियों में बताए गए ऑरिजिन से अनुमति मिली होगी. साथ ही, इसमें कॉन्टेंट स्क्रिप्ट से जुड़े ऑरिजिन भी शामिल होंगे.

रिटर्न

  • Promise<Permissions>

    Chrome 96 और इसके बाद के वर्शन

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.

remove()

Promise
chrome.permissions.remove(
  permissions: Permissions,
  callback?: function,
)
: Promise<boolean>

इससे चुनी गई अनुमतियों का ऐक्सेस हट जाता है. अगर अनुमतियां हटाने में कोई समस्या आती है, तो प्रॉमिस अस्वीकार कर दिया जाएगा.

पैरामीटर

  • अनुमतियां
  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं है

    callback पैरामीटर ऐसा दिखता है:

    (removed: boolean) => void

    • निकाला गया

      बूलियन

      अनुमतियां हटाए जाने पर, यह फ़ंक्शन True दिखाता है.

रिटर्न

  • Promise<boolean>

    Chrome 96 और इसके बाद के वर्शन

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.

request()

Promise
chrome.permissions.request(
  permissions: Permissions,
  callback?: function,
)
: Promise<boolean>

यह कुकी, तय की गई अनुमतियों को ऐक्सेस करने का अनुरोध करती है. अगर ज़रूरी हो, तो उपयोगकर्ता को एक प्रॉम्प्ट दिखाती है. ये अनुमतियां, मेनिफ़ेस्ट के optional_permissions फ़ील्ड में तय की गई हों या ऐसी ज़रूरी अनुमतियां हों जिन्हें उपयोगकर्ता ने रोक दिया हो. ऑरिजिन पैटर्न में दिए गए पाथ को अनदेखा कर दिया जाएगा. ज़रूरी नहीं कि ऑरिजिन की सभी अनुमतियों का अनुरोध किया जाए. इसके बजाय, उनके सबसेट का अनुरोध किया जा सकता है. उदाहरण के लिए, अगर आपने मेनिफ़ेस्ट के optional_permissions सेक्शन में *://*\/* तय किया है, तो http://example.com/ का अनुरोध किया जा सकता है. अगर अनुमतियों का अनुरोध करने में कोई समस्या आती है, तो प्रॉमिस अस्वीकार कर दिया जाएगा.

पैरामीटर

  • अनुमतियां
  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं है

    callback पैरामीटर ऐसा दिखता है:

    (granted: boolean) => void

    • अनुमति दी गई

      बूलियन

      अगर उपयोगकर्ता ने बताई गई अनुमतियां दी हैं, तो यह वैल्यू सही होती है.

रिटर्न

  • 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