রিফ্রেশ তারিখ: ২০২৬-০৯-২৫ রোবটস: নোইনডেক্স
বর্ণনা
ইনস্টল করার সময়ের পরিবর্তে রান টাইমে ঘোষিত ঐচ্ছিক অনুমতিগুলো অনুরোধ করতে chrome.permissions API ব্যবহার করুন, যাতে ব্যবহারকারীরা বুঝতে পারেন কেন অনুমতিগুলো প্রয়োজন এবং শুধুমাত্র প্রয়োজনীয় অনুমতিগুলোই প্রদান করেন।
সংক্ষিপ্ত বিবরণ
একটি এপিআই (API) দ্বারা প্রদত্ত ক্ষমতাগুলো বর্ণনা করার জন্য পারমিশন ওয়ার্নিং (Permission warnings) থাকে, কিন্তু এই ওয়ার্নিংগুলোর মধ্যে কিছু কিছু সহজে বোঝা যায় না। পারমিশন এপিআই (Permissions API) ডেভেলপারদের পারমিশন ওয়ার্নিংগুলো ব্যাখ্যা করতে এবং ধীরে ধীরে নতুন ফিচার চালু করতে সাহায্য করে, যা ব্যবহারকারীদের এক্সটেনশনটির সাথে একটি ঝুঁকিমুক্ত পরিচিতি দেয়। এইভাবে, ব্যবহারকারীরা নির্দিষ্ট করে দিতে পারেন যে তারা কতটা অ্যাক্সেস দিতে ইচ্ছুক এবং কোন ফিচারগুলো তারা চালু করতে চান।
উদাহরণস্বরূপ, ঐচ্ছিক পারমিশন এক্সটেনশনটির মূল কার্যকারিতা হলো নতুন ট্যাব পৃষ্ঠাটিকে ওভাররাইড করা। এর একটি বৈশিষ্ট্য হলো ব্যবহারকারীর দিনের লক্ষ্য প্রদর্শন করা। এই বৈশিষ্ট্যটির জন্য শুধুমাত্র স্টোরেজ পারমিশন প্রয়োজন, যাতে কোনো সতর্কবার্তা অন্তর্ভুক্ত থাকে না। এক্সটেনশনটিতে একটি অতিরিক্ত বৈশিষ্ট্য রয়েছে, যা ব্যবহারকারীরা নিম্নলিখিত বোতামটিতে ক্লিক করে সক্রিয় করতে পারেন:

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

ঐচ্ছিক অনুমতি বাস্তবায়ন করা
ধাপ ১: কোন অনুমতিগুলো আবশ্যক এবং কোনগুলো ঐচ্ছিক তা নির্ধারণ করুন।
একটি এক্সটেনশন প্রয়োজনীয় এবং ঐচ্ছিক উভয় প্রকারের অনুমতি ঘোষণা করতে পারে। সাধারণভাবে, আপনার উচিত:
- আপনার এক্সটেনশনের মৌলিক কার্যকারিতার জন্য যখন প্রয়োজন, তখনই প্রয়োজনীয় অনুমতিগুলো ব্যবহার করুন।
- আপনার এক্সটেনশনের ঐচ্ছিক বৈশিষ্ট্যগুলির জন্য যখন প্রয়োজন হয়, তখনই ঐচ্ছিক অনুমতিগুলি ব্যবহার করুন।
প্রয়োজনীয় অনুমতির সুবিধাগুলো হলো:
- কমবার অনুরোধ: একটি এক্সটেনশন সমস্ত অনুমতি গ্রহণ করার জন্য ব্যবহারকারীকে একবার অনুরোধ করতে পারে।
- সহজতর উন্নয়ন: প্রয়োজনীয় অনুমতিগুলোর উপস্থিতি নিশ্চিত করা হয়।
ঐচ্ছিক অনুমতির সুবিধাসমূহ:
- উন্নততর নিরাপত্তা: এক্সটেনশনগুলো কম অনুমতি নিয়ে চলে, কারণ ব্যবহারকারীরা কেবল প্রয়োজনীয় অনুমতিগুলোই সক্রিয় করেন।
- ব্যবহারকারীদের জন্য উন্নততর তথ্য: ব্যবহারকারী যখন কোনো নির্দিষ্ট ফিচার চালু করেন, তখন এক্সটেনশনটি ব্যাখ্যা করতে পারে যে কেন সেটির একটি বিশেষ অনুমতির প্রয়োজন।
- সহজতর আপগ্রেড: আপনি যখন আপনার এক্সটেনশন আপগ্রেড করবেন, তখন যদি আপগ্রেডটি আবশ্যকীয় অনুমতির পরিবর্তে ঐচ্ছিক অনুমতি যোগ করে, তাহলেও Chrome আপনার ব্যবহারকারীদের জন্য এটি নিষ্ক্রিয় করবে না।
ধাপ ২: ম্যানিফেস্টে ঐচ্ছিক অনুমতিগুলো ঘোষণা করুন।
আপনার এক্সটেনশন ম্যানিফেস্টে ` optional_permissions কী ব্যবহার করে ঐচ্ছিক অনুমতিগুলো ঘোষণা করুন এবং এর জন্য `permissions` ফিল্ডের মতো একই ফরম্যাট ব্যবহার করুন:
{
"name": "My extension",
...
"optional_permissions": ["tabs"],
"optional_host_permissions": ["https://www.google.com/"],
...
}
আপনি যদি এমন হোস্টের জন্য অনুরোধ করতে চান যা শুধুমাত্র রানটাইমে আবিষ্কৃত হয়, তাহলে আপনার এক্সটেনশনের optional_host_permissions ফিল্ডে "https://*/*" অন্তর্ভুক্ত করুন। এটি আপনাকে Permissions.origins- এ যেকোনো অরিজিন নির্দিষ্ট করার সুযোগ দেয়, যতক্ষণ পর্যন্ত সেটির স্কিম মিলে যায়।
যে অনুমতিগুলো ঐচ্ছিক হিসেবে নির্দিষ্ট করা যায় না
বেশিরভাগ ক্রোম এক্সটেনশনের অনুমতি ঐচ্ছিক হিসেবে নির্দিষ্ট করা যেতে পারে, তবে নিম্নলিখিত ব্যতিক্রমগুলো রয়েছে।
| অনুমতি | বর্ণনা |
|---|---|
"debugger" | chrome.debugger এপিআইটি ক্রোমের রিমোট ডিবাগিং প্রোটোকলের একটি বিকল্প ট্রান্সপোর্ট হিসেবে কাজ করে। |
"declarativeNetRequest" | এক্সটেনশনটিকে chrome.declarativeNetRequest API ব্যবহারের অনুমতি দেয়। |
"devtools" | এক্সটেনশনটি ক্রোম ডেভটুলস-এর কার্যকারিতা প্রসারিত করার সুযোগ দেয়। |
"experimental" | শুধুমাত্র ক্যানারি এবং ডেভ চ্যানেলের জন্য । এক্সটেনশনটিকে chrome.experimental API-গুলোতে অ্যাক্সেস প্রদান করে। |
"geolocation" | এক্সটেনশনটিকে HTML5 জিওলোকেশন এপিআই ব্যবহার করার অনুমতি দেয়। |
"mdns" | এক্সটেনশনটিকে chrome.mdns API ব্যবহারের অনুমতি দেয়। |
"proxy" | ক্রোমের প্রক্সি সেটিংস পরিচালনা করার জন্য এক্সটেনশনটিকে chrome.proxy API-তে অ্যাক্সেস প্রদান করে। |
"tts" | chrome.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
বৈশিষ্ট্য
- উৎপত্তি
স্ট্রিং[] ঐচ্ছিক
হোস্ট পারমিশনের তালিকা, যার মধ্যে ম্যানিফেস্টের
optional_permissionsবাpermissionsকী-তে নির্দিষ্ট করা পারমিশনগুলো এবং কন্টেন্ট স্ক্রিপ্টের সাথে যুক্ত পারমিশনগুলো অন্তর্ভুক্ত। - অনুমতি
স্ট্রিং[] ঐচ্ছিক
নামযুক্ত অনুমতির তালিকা (হোস্ট বা অরিজিন অন্তর্ভুক্ত নয়)।
পদ্ধতি
contains()
chrome.permissions.contains(
permissions: Permissions,
callback?: function,
): Promise<boolean>
এক্সটেনশনটির নির্দিষ্ট অনুমতি আছে কিনা তা যাচাই করে।
প্যারামিটার
- অনুমতি
- কলব্যাক
ফাংশন ঐচ্ছিক
callbackপ্যারামিটারটি দেখতে এইরকম:(result: boolean) => void
- ফলাফল
বুলিয়ান
এক্সটেনশনটির নির্দিষ্ট অনুমতি থাকলে এটি 'ট্রু' হবে। যদি কোনো অরিজিনকে ঐচ্ছিক অনুমতি এবং কন্টেন্ট স্ক্রিপ্ট ম্যাচ প্যাটার্ন উভয় হিসাবে নির্দিষ্ট করা হয়, তবে উভয় অনুমতি প্রদান করা না হলে এটি
falseরিটার্ন করবে।
ফেরত
প্রতিশ্রুতি<বুলিয়ান>
ক্রোম ৯৬+প্রমিস শুধুমাত্র ম্যানিফেস্ট ভি৩ এবং এর পরবর্তী সংস্করণগুলোতে সমর্থিত, অন্যান্য প্ল্যাটফর্মে কলব্যাক ব্যবহার করতে হবে।
getAll()
chrome.permissions.getAll(
callback?: function,
): Promise<Permissions>
এক্সটেনশনটির বর্তমান অনুমতিসমূহ সংগ্রহ করে।
প্যারামিটার
- কলব্যাক
ফাংশন ঐচ্ছিক
callbackপ্যারামিটারটি দেখতে এইরকম:(permissions: Permissions) => void
- অনুমতি
এক্সটেনশনটির সক্রিয় অনুমতিসমূহ। উল্লেখ্য যে,
originsপ্রপার্টিটিতে ম্যানিফেস্টেরpermissionsএবংoptional_permissionsকী-তে নির্দিষ্ট করা এবং `Content Scripts`-এর সাথে যুক্ত অনুমোদিত অরিজিনগুলো অন্তর্ভুক্ত থাকবে।
ফেরত
প্রতিশ্রুতি < অনুমতি >
ক্রোম ৯৬+প্রমিস শুধুমাত্র ম্যানিফেস্ট ভি৩ এবং এর পরবর্তী সংস্করণগুলোতে সমর্থিত, অন্যান্য প্ল্যাটফর্মে কলব্যাক ব্যবহার করতে হবে।
remove()
chrome.permissions.remove(
permissions: Permissions,
callback?: function,
): Promise<boolean>
নির্দিষ্ট অনুমতিগুলিতে প্রবেশাধিকার অপসারণ করে। অনুমতিগুলি অপসারণ করতে কোনো সমস্যা হলে, প্রমিসটি প্রত্যাখ্যাত হবে।
প্যারামিটার
- অনুমতি
- কলব্যাক
ফাংশন ঐচ্ছিক
callbackপ্যারামিটারটি দেখতে এইরকম:(removed: boolean) => void
- অপসারণ করা হয়েছে
বুলিয়ান
অনুমতিগুলো সরিয়ে নেওয়া হলে সত্য হবে।
ফেরত
প্রতিশ্রুতি<বুলিয়ান>
ক্রোম ৯৬+প্রমিস শুধুমাত্র ম্যানিফেস্ট ভি৩ এবং এর পরবর্তী সংস্করণগুলোতে সমর্থিত, অন্যান্য প্ল্যাটফর্মে কলব্যাক ব্যবহার করতে হবে।
request()
chrome.permissions.request(
permissions: Permissions,
callback?: function,
): Promise<boolean>
নির্দিষ্ট অনুমতিগুলির জন্য অ্যাক্সেসের অনুরোধ করা হয় এবং প্রয়োজনে ব্যবহারকারীকে একটি প্রম্পট দেখানো হয়। এই অনুমতিগুলি অবশ্যই ম্যানিফেস্টের optional_permissions ফিল্ডে সংজ্ঞায়িত থাকতে হবে অথবা ব্যবহারকারী কর্তৃক প্রদত্ত প্রয়োজনীয় অনুমতি হতে হবে। অরিজিন প্যাটার্নের পাথ উপেক্ষা করা হবে। আপনি ঐচ্ছিক অরিজিন অনুমতিগুলির উপসেটের জন্য অনুরোধ করতে পারেন; উদাহরণস্বরূপ, যদি আপনি ম্যানিফেস্টের optional_permissions ' বিভাগে *://*\/* উল্লেখ করেন, তাহলে আপনি http://example.com/ জন্য অনুরোধ করতে পারেন। অনুমতিগুলির জন্য অনুরোধ করতে কোনো সমস্যা হলে, প্রমিসটি বাতিল হয়ে যাবে।
প্যারামিটার
- অনুমতি
- কলব্যাক
ফাংশন ঐচ্ছিক
callbackপ্যারামিটারটি দেখতে এইরকম:(granted: boolean) => void
- মঞ্জুর করা হয়েছে
বুলিয়ান
যদি ব্যবহারকারী নির্দিষ্ট অনুমতিগুলো প্রদান করে থাকেন, তবে এটি সত্য হবে।
ফেরত
প্রতিশ্রুতি<বুলিয়ান>
ক্রোম ৯৬+প্রমিস শুধুমাত্র ম্যানিফেস্ট ভি৩ এবং এর পরবর্তী সংস্করণগুলোতে সমর্থিত, অন্যান্য প্ল্যাটফর্মে কলব্যাক ব্যবহার করতে হবে।
ইভেন্টগুলি
onAdded
chrome.permissions.onAdded.addListener(
callback: function,
)
এক্সটেনশনটি নতুন অনুমতি অর্জন করলে এটি সক্রিয় হয়।
প্যারামিটার
- কলব্যাক
ফাংশন
callbackপ্যারামিটারটি দেখতে এইরকম:(permissions: Permissions) => void
- অনুমতি
onRemoved
chrome.permissions.onRemoved.addListener(
callback: function,
)
এক্সটেনশন থেকে অনুমতি ব্যবহারের সুযোগ সরিয়ে নেওয়া হলে এটি কার্যকর হয়।
প্যারামিটার
- কলব্যাক
ফাংশন
callbackপ্যারামিটারটি দেখতে এইরকম:(permissions: Permissions) => void
- অনুমতি