How to ask user to grant permissions for 'Access your data for all websites' through a prompt during the installation process

Hi,

I recently developed a Firefox browser extension using Manifest V3, it’s to show coupons & offers on 1000s of online shopping website.

To function properly, the extension needs to have permission for ‘Access your data for all websites’ ( <all_urls> permission)

During installation, permission prompt does show up, but it doesn’t ask permission for ‘Access your data for all websites’ but ask for other permission.

I have specified this permission in the permissions key in my manifest file. However, when I try to install the extension, It asks for other permission, but not <all_urls> permission: Screenshot at https://i.imgur.com/UiG5Dve.png

After installation, it start working properly only if user has manually granted permission from extension settings https://i.imgur.com/4QWOLOC.png Most users would not know this and may uninstall the extension if permission is not granted prior.

Please suggest the fix.

Here is how my Manifest V3 permission code look like https://i.imgur.com/JmMM3l2.png

I am using Firefox latest version and I have checked with/without any other extensions or add-ons that may be impacting the installation process.

I would greatly appreciate any help or guidance in resolving this issue. I believe the permission prompt is crucial for my extension to function properly and I would like to get it working as soon as possible.

Thank you for your time and assistance.

Best regards,

Krishna

2 Likes

This seems very similar to this question: Permissions not being asked upon add-on installation.

Yeah happening to me as well. This seems like a big deal and will prevent developers moving to mv3 on Firefox. Does anyone know a fix / or if this is a bug?

Host permissions are optional and opt-in for MV3 in Firefox. Here’s a blog post with more information: https://blog.mozilla.org/addons/2022/11/17/unified-extensions-button-and-how-to-handle-permissions-in-manifest-v3/

We’re developing UI that will enable users to more easily grant permissions (or not) during install, but your extension should still expect that some users might choose to not do it. You should check that using the permissions.contains() api and react as appropriate for your use case (that could be explaining to users why your extension needs permissions and/or asking for them using the permissions.request() api).

1 Like

I have been facing this problem for a while without knowing the cause.
thanks to this page that @zombie provided I understand better.
See a summary of what to do:

manifest:
---------
	"manifest_version": 3,
	...
	"optional_permissions": [
	    "activeTab"
	]

background.js:
--------------
	async function requestPermissions() {
	  const permissionsToRequest = {
	    permissions: ["activeTab"],
	    origins: ["<all_urls>"]
	  }
	  await browser.permissions.request(permissionsToRequest);
	}

	browser.contextMenus.onClicked.addListener(async (info, tab) => { 
	  requestPermissions();
	  ...  
	});

This is not allowed on browser.runtime.onInstalled, it’s required to be on user action.

1 Like