বর্ণনা
ইনস্টলের সময় না করে রান টাইমে ঘোষিত ঐচ্ছিক অনুমতির অনুরোধ করতে chrome.permissions
API ব্যবহার করুন, যাতে ব্যবহারকারীরা বুঝতে পারে কেন অনুমতিগুলি প্রয়োজন এবং শুধুমাত্র সেইগুলি মঞ্জুর করুন যা প্রয়োজনীয়৷
ধারণা এবং ব্যবহার
একটি API দ্বারা প্রদত্ত ক্ষমতাগুলি বর্ণনা করার জন্য অনুমতি সতর্কতা বিদ্যমান, তবে এই সতর্কতাগুলির মধ্যে কিছু স্পষ্ট নাও হতে পারে৷ পারমিশন এপিআই ডেভেলপারদের অনুমতির সতর্কতা ব্যাখ্যা করতে এবং ধীরে ধীরে নতুন বৈশিষ্ট্য প্রবর্তন করতে দেয় যা ব্যবহারকারীদের এক্সটেনশনের ঝুঁকিমুক্ত ভূমিকা দেয়। এইভাবে, ব্যবহারকারীরা নির্দিষ্ট করতে পারেন যে তারা কতটা অ্যাক্সেস দিতে ইচ্ছুক এবং কোন বৈশিষ্ট্যগুলি তারা সক্ষম করতে চান৷
উদাহরণস্বরূপ, ঐচ্ছিক অনুমতি এক্সটেনশনের মূল কার্যকারিতা নতুন ট্যাব পৃষ্ঠাকে ওভাররাইড করছে৷ একটি বৈশিষ্ট্য ব্যবহারকারীর দিনের লক্ষ্য প্রদর্শন করছে। এই বৈশিষ্ট্যটির জন্য শুধুমাত্র স্টোরেজ অনুমতি প্রয়োজন, যার মধ্যে একটি সতর্কতা অন্তর্ভুক্ত নয়। এক্সটেনশনটির একটি অতিরিক্ত বৈশিষ্ট্য রয়েছে, যা ব্যবহারকারীরা নিম্নলিখিত বোতামে ক্লিক করে সক্ষম করতে পারেন:
ব্যবহারকারীর শীর্ষস্থানীয় সাইটগুলি প্রদর্শনের জন্য শীর্ষস্থানীয় সাইটগুলির অনুমতি প্রয়োজন, যার জন্য নিম্নলিখিত সতর্কতা রয়েছে৷
ঐচ্ছিক অনুমতি প্রয়োগ করুন
ধাপ 1: কোন অনুমতি প্রয়োজন এবং কোনটি ঐচ্ছিক তা নির্ধারণ করুন
একটি এক্সটেনশন প্রয়োজনীয় এবং ঐচ্ছিক উভয় অনুমতি ঘোষণা করতে পারে। সাধারণভাবে, আপনার উচিত:
- আপনার এক্সটেনশনের মৌলিক কার্যকারিতার জন্য প্রয়োজনীয় অনুমতিগুলি ব্যবহার করুন।
- আপনার এক্সটেনশনের ঐচ্ছিক বৈশিষ্ট্যগুলির জন্য যখন তাদের প্রয়োজন হয় তখন ঐচ্ছিক অনুমতিগুলি ব্যবহার করুন৷
প্রয়োজনীয় অনুমতির সুবিধা:
- কম প্রম্পট: একটি এক্সটেনশন ব্যবহারকারীকে একবার সমস্ত অনুমতি গ্রহণ করার জন্য অনুরোধ করতে পারে।
- সহজ উন্নয়ন: প্রয়োজনীয় অনুমতি উপস্থিত থাকার গ্যারান্টি দেওয়া হয়।
ঐচ্ছিক অনুমতির সুবিধা:
- উন্নত নিরাপত্তা: এক্সটেনশনগুলি কম অনুমতির সাথে চালিত হয় যেহেতু ব্যবহারকারীরা শুধুমাত্র প্রয়োজনীয় অনুমতিগুলি সক্ষম করে৷
- ব্যবহারকারীদের জন্য আরও ভাল তথ্য: একটি এক্সটেনশন ব্যাখ্যা করতে পারে কেন এটির একটি নির্দিষ্ট অনুমতি প্রয়োজন যখন ব্যবহারকারী প্রাসঙ্গিক বৈশিষ্ট্যটি সক্ষম করে৷
- আরও সহজ আপগ্রেড: আপনি যখন আপনার এক্সটেনশন আপগ্রেড করবেন, আপগ্রেড প্রয়োজনীয় অনুমতির পরিবর্তে ঐচ্ছিক যোগ করলে Chrome আপনার ব্যবহারকারীদের জন্য এটিকে অক্ষম করবে না।
ধাপ 2: ম্যানিফেস্টে ঐচ্ছিক অনুমতি ঘোষণা করুন
আপনার এক্সটেনশন ম্যানিফেস্টে ঐচ্ছিক অনুমতিগুলিকে 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 কার্যকারিতা প্রসারিত করার অনুমতি দেয়। |
"geolocation" | এক্সটেনশনটিকে HTML5 ভূ-অবস্থান API ব্যবহার করার অনুমতি দেয়৷ |
"mdns" | chrome.mdns API-এ এক্সটেনশন অ্যাক্সেস মঞ্জুর করে। |
"proxy" | Chrome এর প্রক্সি সেটিংস পরিচালনা করতে chrome.proxy API-এ এক্সটেনশন অ্যাক্সেস মঞ্জুর করে৷ |
"tts" | chrome.tts API সংশ্লেষিত টেক্সট-টু-স্পীচ (TTS) চালায়। |
"ttsEngine" | chrome.ttsEngine API একটি এক্সটেনশন ব্যবহার করে একটি টেক্সট-টু-স্পীচ (TTS) ইঞ্জিন প্রয়োগ করে। |
"wallpaper" | শুধুমাত্র ChromeOS । chrome.wallpaper API ব্যবহার করুন ChromeOS ওয়ালপেপার পরিবর্তন করুন। |
উপলব্ধ অনুমতি এবং তাদের সতর্কতা সম্পর্কে আরও তথ্যের জন্য অনুমতি ঘোষণা দেখুন।
ধাপ 3: ঐচ্ছিক অনুমতির অনুরোধ করুন
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();
}
});
});
ক্রোম ব্যবহারকারীকে অনুরোধ করে যদি অনুমতি যোগ করার ফলে ব্যবহারকারী ইতিমধ্যে দেখেছেন এবং গ্রহণ করেছেন তার চেয়ে ভিন্ন সতর্কতা বার্তা আসে। উদাহরণস্বরূপ, পূর্ববর্তী কোডটি এইরকম একটি প্রম্পট হতে পারে:
ধাপ 4: এক্সটেনশনের বর্তমান অনুমতি পরীক্ষা করুন
আপনার এক্সটেনশনের একটি নির্দিষ্ট অনুমতি বা অনুমতির সেট আছে কিনা তা পরীক্ষা করতে, 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.
}
});
ধাপ 5: অনুমতিগুলি সরান
যখন আপনার আর প্রয়োজন হয় না তখন আপনার অনুমতিগুলি সরানো উচিত। অনুমতি মুছে ফেলার পরে, 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
কীগুলিতে নির্দিষ্ট করা এবং সামগ্রী স্ক্রিপ্টের সাথে যুক্ত হোস্ট অনুমতিগুলির তালিকা। - অনুমতি
স্ট্রিং[] ঐচ্ছিক
নাম দেওয়া অনুমতিগুলির তালিকা (হোস্ট বা উত্স অন্তর্ভুক্ত নয়)।
পদ্ধতি
addHostAccessRequest()
chrome.permissions.addHostAccessRequest(
request: object,
callback?: function,
)
একটি হোস্ট অ্যাক্সেস অনুরোধ যোগ করে। অনুরোধটি শুধুমাত্র ব্যবহারকারীকে সংকেত করা হবে যদি এক্সটেনশন অনুরোধে হোস্টে অ্যাক্সেস দেওয়া যায়। ক্রস-অরিজিন নেভিগেশনে অনুরোধ রিসেট করা হবে। গৃহীত হলে, সাইটের শীর্ষস্থানে অবিরাম অ্যাক্সেস মঞ্জুর করে
পরামিতি
- অনুরোধ
বস্তু
- ডকুমেন্ট আইডি
স্ট্রিং ঐচ্ছিক
একটি নথির আইডি যেখানে হোস্ট অ্যাক্সেসের অনুরোধ দেখানো যেতে পারে। একটি ট্যাবের মধ্যে শীর্ষ-স্তরের নথি হতে হবে৷ যদি প্রদান করা হয়, অনুরোধটি নির্দিষ্ট নথির ট্যাবে দেখানো হয় এবং নথিটি একটি নতুন উৎসে নেভিগেট করার সময় সরানো হয়। একটি নতুন অনুরোধ যোগ করলে তা
tabId
জন্য বিদ্যমান যেকোনো অনুরোধকে ওভাররাইড করবে। এই বাtabId
অবশ্যই উল্লেখ করতে হবে। - প্যাটার্ন
স্ট্রিং ঐচ্ছিক
URL প্যাটার্ন যেখানে হোস্ট অ্যাক্সেস অনুরোধ দেখানো যেতে পারে। প্রদান করা হলে, হোস্ট অ্যাক্সেস অনুরোধগুলি শুধুমাত্র এই প্যাটার্নের সাথে মেলে এমন URLগুলিতে দেখানো হবে৷
- ট্যাবআইডি
সংখ্যা ঐচ্ছিক
ট্যাবের আইডি যেখানে হোস্ট অ্যাক্সেসের অনুরোধ দেখানো যেতে পারে। যদি প্রদান করা হয়, অনুরোধটি নির্দিষ্ট ট্যাবে দেখানো হয় এবং যখন ট্যাবটি একটি নতুন উৎসে নেভিগেট করে তখন সরানো হয়। একটি নতুন অনুরোধ যোগ করলে
documentId
জন্য বিদ্যমান একটি অনুরোধ ওভাররাইড হবে। এই বাdocumentId
অবশ্যই উল্লেখ করতে হবে।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
contains()
chrome.permissions.contains(
permissions: Permissions,
callback?: function,
)
এক্সটেনশনের নির্দিষ্ট অনুমতি আছে কিনা তা পরীক্ষা করে।
পরামিতি
- অনুমতি
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(result: boolean) => void
- ফলাফল
বুলিয়ান
এক্সটেনশনের নির্দিষ্ট অনুমতি থাকলে সত্য। যদি একটি উত্স একটি ঐচ্ছিক অনুমতি এবং একটি বিষয়বস্তু স্ক্রিপ্ট ম্যাচ প্যাটার্ন উভয় হিসাবে নির্দিষ্ট করা হয়, উভয় অনুমতি মঞ্জুর করা না হলে এটি
false
হবে।
রিটার্নস
প্রতিশ্রুতি<বুলিয়ান>
Chrome 96+প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
getAll()
chrome.permissions.getAll(
callback?: function,
)
এক্সটেনশনের অনুমতির বর্তমান সেট পায়।
পরামিতি
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(permissions: Permissions) => void
- অনুমতি
এক্সটেনশনের সক্রিয় অনুমতি। মনে রাখবেন যে
origins
প্রপার্টিতে ম্যানিফেস্টেরpermissions
এবংoptional_permissions
কী এবং বিষয়বস্তু স্ক্রিপ্টের সাথে সংশ্লিষ্টদের থেকে প্রদত্ত অরিজিন থাকবে।
রিটার্নস
প্রতিশ্রুতি < অনুমতি >
Chrome 96+প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
remove()
chrome.permissions.remove(
permissions: Permissions,
callback?: function,
)
নির্দিষ্ট অনুমতিতে অ্যাক্সেস সরিয়ে দেয়। অনুমতি অপসারণ কোনো সমস্যা হলে, runtime.lastError
সেট করা হবে।
পরামিতি
- অনুমতি
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(removed: boolean) => void
- সরানো
বুলিয়ান
অনুমতি মুছে ফেলা হলে সত্য.
রিটার্নস
প্রতিশ্রুতি<বুলিয়ান>
Chrome 96+প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
removeHostAccessRequest()
chrome.permissions.removeHostAccessRequest(
request: object,
callback?: function,
)
একটি হোস্ট অ্যাক্সেস অনুরোধ সরিয়ে দেয়, যদি বিদ্যমান থাকে।
পরামিতি
- অনুরোধ
বস্তু
- ডকুমেন্ট আইডি
স্ট্রিং ঐচ্ছিক
একটি নথির আইডি যেখানে হোস্ট অ্যাক্সেস অনুরোধ সরানো হবে। একটি ট্যাবের মধ্যে শীর্ষ-স্তরের নথি হতে হবে৷ এই বা
tabId
অবশ্যই উল্লেখ করতে হবে। - প্যাটার্ন
স্ট্রিং ঐচ্ছিক
URL প্যাটার্ন যেখানে হোস্ট অ্যাক্সেস অনুরোধ সরানো হবে। প্রদান করা হলে, এটি অবশ্যই একটি বিদ্যমান হোস্ট অ্যাক্সেস অনুরোধের প্যাটার্নের সাথে মেলে।
- ট্যাবআইডি
সংখ্যা ঐচ্ছিক
ট্যাবের আইডি যেখানে হোস্ট অ্যাক্সেস অনুরোধ সরানো হবে। এই বা
documentId
অবশ্যই উল্লেখ করতে হবে।
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
রিটার্নস
প্রতিশ্রুতি <void>
প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
request()
chrome.permissions.request(
permissions: Permissions,
callback?: function,
)
প্রয়োজনে ব্যবহারকারীর কাছে একটি প্রম্পট প্রদর্শন করে নির্দিষ্ট অনুমতিগুলিতে অ্যাক্সেসের অনুরোধ করে। এই অনুমতিগুলিকে অবশ্যই ম্যানিফেস্টের optional_permissions
ক্ষেত্রে সংজ্ঞায়িত করতে হবে বা ব্যবহারকারীর দ্বারা আটকে রাখা প্রয়োজনীয় অনুমতিগুলি হতে হবে৷ মূল নিদর্শনগুলির পাথগুলি উপেক্ষা করা হবে৷ আপনি ঐচ্ছিক উত্স অনুমতির উপসেট অনুরোধ করতে পারেন; উদাহরণস্বরূপ, যদি আপনি ম্যানিফেস্টের optional_permissions
বিভাগে *://*\/*
উল্লেখ করেন, তাহলে আপনি http://example.com/
অনুরোধ করতে পারেন। অনুমতির অনুরোধ করতে কোনো সমস্যা হলে, runtime.lastError
সেট করা হবে।
পরামিতি
- অনুমতি
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(granted: boolean) => void
- মঞ্জুর
বুলিয়ান
ব্যবহারকারী নির্দিষ্ট অনুমতি প্রদান করলে সত্য।
রিটার্নস
প্রতিশ্রুতি<বুলিয়ান>
Chrome 96+প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
ঘটনা
onAdded
chrome.permissions.onAdded.addListener(
callback: function,
)
যখন এক্সটেনশন নতুন অনুমতি অর্জন করে তখন বহিস্কার করা হয়।
পরামিতি
- কলব্যাক
ফাংশন
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(permissions: Permissions) => void
- অনুমতি
onRemoved
chrome.permissions.onRemoved.addListener(
callback: function,
)
এক্সটেনশন থেকে অনুমতিগুলি সরানো হলে বহিস্কার করা হয়েছে৷
পরামিতি
- কলব্যাক
ফাংশন
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(permissions: Permissions) => void
- অনুমতি