chrome.permissions

refresh date: 2026-09-25 robots: noindex

বিবরণ

ইনস্টল করার সময়ের পরিবর্তে রান টাইমে ঘোষিত ঐচ্ছিক অনুমতির অনুরোধ করতে chrome.permissions API ব্যবহার করুন, যাতে ব্যবহারকারীরা বুঝতে পারেন যে কেন অনুমতি প্রয়োজন এবং শুধুমাত্র প্রয়োজনীয় অনুমতি প্রদান করেন।

এক নজরে

API-এর মাধ্যমে মঞ্জুর করা ক্ষমতার বিবরণ দিতে অনুমতি সংক্রান্ত সতর্কতা দেখানো হয়, তবে এর মধ্যে কিছু সতর্কতা স্পষ্ট নাও হতে পারে। অনুমতি API ডেভেলপারদের অনুমতি সংক্রান্ত সতর্কতা ব্যাখ্যা করতে এবং ধীরে ধীরে নতুন ফিচার চালু করতে দেয় যা ব্যবহারকারীদের এক্সটেনশনের সাথে ঝুঁকি-মুক্ত পরিচয় প্রদান করে। এইভাবে, ব্যবহারকারীরা কতটা অ্যাক্সেস দিতে ইচ্ছুক এবং কোন কোন ফিচার চালু করতে চান তা নির্দিষ্ট করতে পারবেন।

যেমন, ঐচ্ছিক অনুমতি এক্সটেনশনের মূল কার্যকারিতা নতুন ট্যাব পৃষ্ঠাকে ওভাররাইড করছে। একটি ফিচার ব্যবহারকারীর দিনের লক্ষ্য দেখাচ্ছে। এই ফিচারের জন্য শুধুমাত্র স্টোরেজ সংক্রান্ত অনুমতি প্রয়োজন, যার মধ্যে কোনও সতর্কতা অন্তর্ভুক্ত থাকে না। এক্সটেনশনে একটি অতিরিক্ত ফিচার আছে, যা ব্যবহারকারীরা নিম্নলিখিত বোতামে ক্লিক করে চালু করতে পারেন:

এক্সটেনশন বোতাম যা অতিরিক্ত ফিচার চালু করে

ব্যবহারকারীর সেরা সাইটগুলি দেখানোর জন্য topSites অনুমতি প্রয়োজন, যার নিম্নলিখিত সতর্কতা রয়েছে।

topSites API-এর জন্য এক্সটেনশন সংক্রান্ত সতর্কতা

ঐচ্ছিক অনুমতি প্রয়োগ করা হচ্ছে

ধাপ ১: কোন কোন অনুমতি প্রয়োজন এবং কোনগুলি ঐচ্ছিক তা ঠিক করুন

একটি এক্সটেনশন প্রয়োজনীয় ও ঐচ্ছিক, দুই ধরনের অনুমতির কথাই ঘোষণা করতে পারে। সাধারণত, আপনাকে এগুলি করতে হবে:

  • আপনার এক্সটেনশনের প্রাথমিক কার্যকারিতার জন্য প্রয়োজনীয় অনুমতি ব্যবহার করুন।
  • আপনার এক্সটেনশনে ঐচ্ছিক ফিচারের জন্য প্রয়োজন হলে ঐচ্ছিক অনুমতি ব্যবহার করুন।

প্রয়োজনীয় অনুমতি দেওয়ার সুবিধা:

  • কম প্রম্পট: কোনও এক্সটেনশন সব অনুমতি গ্রহণ করার জন্য ব্যবহারকারীকে একবার প্রম্পট করতে পারে।
  • সহজ ডেভেলপমেন্ট: প্রয়োজনীয় অনুমতি যে আছে তা নিশ্চিত করা হয়।

ঐচ্ছিক অনুমতির সুবিধা:

  • আরও ভালো নিরাপত্তা: এক্সটেনশন কম অনুমতি নিয়ে কাজ করে, কারণ ব্যবহারকারীরা শুধুমাত্র প্রয়োজনীয় অনুমতিই চালু করেন।
  • ব্যবহারকারীদের জন্য আরও ভালো তথ্য: ব্যবহারকারী প্রাসঙ্গিক ফিচার চালু করলে, কোনও এক্সটেনশন কেন নির্দিষ্ট অনুমতি চাইছে তা ব্যাখ্যা করতে পারে।
  • সহজে আপগ্রেড করা: আপনার এক্সটেনশন আপগ্রেড করার সময়, 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 API, Chrome-এর রিমোট ডিবাগিং প্রোটোকল-এর বিকল্প ট্রান্সপোর্ট হিসেবে কাজ করে।
"declarativeNetRequest" এক্সটেনশনকে chrome.declarativeNetRequest API অ্যাক্সেস করার অনুমতি দেয়।
"devtools" এক্সটেনশনকে Chrome DevTools-এর কার্যকারিতা বাড়ানোর অনুমতি দেয়।
"experimental" শুধুমাত্র Canary এবং ডেভ চ্যানেল । এক্সটেনশনকে chrome.experimental API অ্যাক্সেস করার অনুমতি দেয়।
"geolocation" এক্সটেনশনকে HTML5 জিওলোকেশন API ব্যবহার করার অনুমতি দেয়।
"mdns" এক্সটেনশনকে chrome.mdns API অ্যাক্সেস করার অনুমতি দেয়।
"proxy" Chrome-এর প্রক্সি সেটিংস ম্যানেজ করার জন্য এক্সটেনশনকে chrome.proxy API-তে অ্যাক্সেস দেয়।
"tts" chrome.tts API সিন্থেসাইজড টেক্সট-টু-স্পিচ (TTS) চালায়।
"ttsEngine" chrome.ttsEngine API এক্সটেনশন ব্যবহার করে টেক্সট-টু-স্পিচ (TTS) ইঞ্জিন প্রয়োগ করে।
"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()

প্রতিশ্রুতি
chrome.permissions.contains(
  permissions: Permissions,
  callback?: function,
)
: Promise<boolean>

এক্সটেনশনের নির্দিষ্ট অনুমতি আছে কিনা তা চেক করে।

প্যারামিটারগুলি

  • অনুমতি
  • কলব্যাক

    ফাংশন ঐচ্ছিক

    callback প্যারামিটারটি দেখতে এইরকম:

    (result: boolean) => void

    • ফলাফল

      বুলিয়ান

      এক্সটেনশনের নির্দিষ্ট অনুমতি থাকলে, এটি সত্য। যদি কোনও অরিজিনকে ঐচ্ছিক অনুমতি এবং কন্টেন্ট স্ক্রিপ্ট ম্যাচ প্যাটার্ন, দু'ভাবেই নির্দিষ্ট করা হয়, তাহলে দুটি অনুমতিই না দেওয়া পর্যন্ত এটি false রিটার্ন করবে।

রিটার্ন

  • Promise<boolean>

    Chrome 96+

    Manifest V3 এবং তার পরবর্তী ভার্সনের জন্য শুধু প্রমিস কাজ করে, অন্যান্য প্ল্যাটফর্মের ক্ষেত্রে কলব্যাক ব্যবহার করতে হবে।

getAll()

প্রতিশ্রুতি
chrome.permissions.getAll(
  callback?: function,
)
: Promise<Permissions>

এক্সটেনশনের বর্তমান অনুমতির সেট পায়।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন ঐচ্ছিক

    callback প্যারামিটারটি দেখতে এইরকম:

    (permissions: Permissions) => void

    • অনুমতি

      এক্সটেনশনের অ্যাক্টিভ অনুমতি। মনে রাখবেন যে origins প্রপার্টিতে ম্যানিফেস্টের permissions এবং optional_permissions কীতে নির্দিষ্ট করা এবং কন্টেন্ট স্ক্রিপ্ট-এর সাথে সম্পর্কিত অনুমোদিত অরিজিন থাকবে।

রিটার্ন

  • Chrome 96+

    Manifest V3 এবং তার পরবর্তী ভার্সনের জন্য শুধু প্রমিস কাজ করে, অন্যান্য প্ল্যাটফর্মের ক্ষেত্রে কলব্যাক ব্যবহার করতে হবে।

remove()

প্রতিশ্রুতি
chrome.permissions.remove(
  permissions: Permissions,
  callback?: function,
)
: Promise<boolean>

নির্দিষ্ট করা অনুমতির অ্যাক্সেস সরিয়ে দেয়। অনুমতি সরানোর ক্ষেত্রে কোনও সমস্যা হলে, প্রমিস বাতিল করা হবে।

প্যারামিটারগুলি

  • অনুমতি
  • কলব্যাক

    ফাংশন ঐচ্ছিক

    callback প্যারামিটারটি দেখতে এইরকম:

    (removed: boolean) => void

    • সরানো হয়েছে

      বুলিয়ান

      অনুমতি সরিয়ে দেওয়া হলে ট্রু।

রিটার্ন

  • Promise<boolean>

    Chrome 96+

    Manifest V3 এবং তার পরবর্তী ভার্সনের জন্য শুধু প্রমিস কাজ করে, অন্যান্য প্ল্যাটফর্মের ক্ষেত্রে কলব্যাক ব্যবহার করতে হবে।

request()

প্রতিশ্রুতি
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