Chrome扩展审核遭拒:notifications与tabs权限为何无需申请?
Chrome扩展权限审核被拒问题解答
一、为什么会被判定权限无需申请?
Chrome扩展的权限是分场景的,很多API并非所有调用都要显式声明权限:
- 比如
notifications:如果只是创建普通通知,靠浏览器事件触发(比如点击扩展图标、收到后台消息),完全不用声明notifications权限;只有用到监听通知点击、修改通知高级属性这类特殊能力时,才需要权限。 - 再比如
tabs:像chrome.tabs.getCurrent()这种获取当前标签页的基础调用,根本不需要tabs权限;只有要获取所有标签页的信息、修改非当前标签页内容时,才得声明权限。
你之前可能误以为这些API必须加权限,但实际上你的代码用的都是无需权限的场景,所以审核团队判定这些权限是多余的。
二、为什么本地运行要权限,商店审核却不用?
本地调试和商店审核的权限校验逻辑不一样:
- 本地调试时Chrome对权限的校验很宽松,就算你加了没必要的权限,浏览器也直接给,不会拦着扩展运行,所以你误以为这些权限是必须的。
- 商店审核是严格按官方规则来的,会精准扫描你的代码实际调用的API场景,判断是不是真的需要对应权限。比如你本地加了
tabs权限,但代码里只用到chrome.tabs.getCurrent(),这个调用本身不需要权限,审核就会要求你删掉。
三、怎么判断哪些权限是多余的?
- 查官方API文档:每个Chrome API的文档都会明确标清楚,哪些调用需要权限,哪些不需要。比如看
chrome.notifications的文档,会列清楚哪些方法要notifications权限,哪些不用。 - 用Chrome开发者工具分析:在扩展管理面板里找到你的扩展,进入“权限”标签,能看到扩展实际用到的权限;也可以在代码里用
chrome.permissions.contains()方法检测,确认某权限是否真的需要。 - 逐步移除测试:先删掉一个权限,然后本地跑一遍所有功能,要是功能正常,说明这个权限确实多余;要是报错,再根据错误提示判断要不要加回来。
- 别乱加“保险权限”:写
manifest.json的时候,只加代码实际用到的权限,别为了省心把可能用到的都加上。比如只是获取当前标签页,就别加tabs权限;只是发普通通知,就别加notifications权限。
内容的提问来源于stack exchange,提问作者Russell Hertel
相关产品推荐
相关产品推荐

