升级Chrome扩展程序的权限

alo*_*loo 24 permissions google-chrome updates google-chrome-extension chrome-web-store

我们目前在Chrome网上应用店中有许多用户的扩展程序.我们目前要求访问foo.site.com,但现在我们想要更新我们的权限,以便我们可以获得bar.site.com.

据我所知,如果我们将需要这两项权限的新更新(新的扩展程序版本推送到Chrome网上应用店),现有用户将禁用其扩展程序,直到他们手动重新启用.在更新后下载扩展程序的新用户将没有问题并拥有这两个权限.但是,禁用我们当前的用户不是一种选择.

有办法解决这个问题吗?

我们已经研究了可选权限,这将解决现有用户的问题(我们只是要求他们单击按钮来升级权限并继续使用).但是对于新用户,他们不仅需要安装扩展程序,还要接受糟糕的可选权限.新用户是否有办法在安装时接受所有权限(可选和必需)?

Ami*_*ein 8

是的,有解决方案.您将新权限设置为可选,然后在用户使用新功能之前请求权限.这是100%的工作.

这是您添加到清单中的内容:

"permissions": ["tabs","http://*/*","https://*/*"],
Run Code Online (Sandbox Code Playgroud)

之后你可以使用:

chrome.permissions.request 
Run Code Online (Sandbox Code Playgroud)

chrome.permissions.contains
Run Code Online (Sandbox Code Playgroud)

  • 有没有一种方法,我的旧用户仅获得可选权限弹出窗口,而新用户在安装扩展程序时仅获得一次权限,而在安装时以及使用这些可选功能时仅获得两次。 (2认同)

小智 5

面对与我的扩展程序相同的问题,我在这篇文章中搜索了相同的问题。在某些情况下,更新似乎可以接受。根据:https : //support.google.com/chrome_webstore/answer/1054246http://developer.chrome.com/extensions/permission_warnings.html上的示例

似乎更新您的权限实际上会禁用您的扩展程序,但是它会提示用户您的更改并允许轻松“重新启用”。

在您的场景中,这可能是不可接受的,但是在我的情况下,默认情况下获得新用户的附加权限胜过现有用户无法重新启用的风险。因为这比之前的现有用户不知道扩展程序被禁用的方式要好得多......

我知道这篇文章很旧,但因为它是这个问题的最高谷歌结果,所以我认为更新有利于将来参考......

  • 有没有办法,我的老用户只能获得可选的权限弹出窗口,但新用户在安装扩展时只能获得一次,而不是两次 - 一次是在安装时,以及在使用这些可选功能时。 (2认同)

Dav*_*han 5

从 chrome 16 开始,您可以在安装时设置 optional_permission 并在运行时请求提升权限。请参阅https://developer.chrome.com/extensions/permissions

在 manifest.json 中:

  {
    "name": "My extension",
    ...
    "optional_permissions": [ "tabs", "http://bar.site.com/" ],
    ...
  }
Run Code Online (Sandbox Code Playgroud)

在 popup.json 中:

    document.querySelector('#my-button').addEventListener('click', function(event) {
    // Permissions must be requested from inside a user gesture, like a button's
    // click handler.
    chrome.permissions.request({
      permissions: ['tabs'],
      origins: ['http://bar.site.com/']
    }, function(granted) {
      // The callback argument will be true if the user granted the permissions.
      if (granted) {
        doSomething();
      } else {
        doSomethingElse();
      }
    });
  });
Run Code Online (Sandbox Code Playgroud)