Подтвердить что ты не робот

Обновление разрешений для Chrome Extensions

В настоящее время у нас есть расширение в Интернет-магазине Chrome со многими пользователями. В настоящее время мы запрашиваем доступ к foo.site.com, но теперь мы хотели бы обновить наши разрешения, чтобы мы могли получить bar.site.com.

Как я понимаю, теперь, если мы нажмем новое обновление (новая версия расширения в Интернет-магазин Chrome), требующее этих двух разрешений, у существующих пользователей будет отключено расширение, пока они не будут вручную повторно включены. Новые пользователи, которые загружают расширение после обновления, будут в порядке и имеют обе разрешения. Однако отключить наших текущих пользователей не вариант.

Как обойти это?

Мы рассмотрели дополнительные разрешения, которые позволят решить проблему для существующих пользователей (мы просто попросим их нажать кнопку, чтобы обновить разрешения и быть на нашем пути). Однако для новых пользователей им не нужно будет устанавливать расширение, но также принимать дополнительные разрешения, которые отсасываются. Есть ли способ для новых пользователей принять все разрешения (необязательные и обязательные) во время установки?

4b9b3361

Ответ 1

Да, есть решение. Вы устанавливаете новые разрешения как необязательные, а затем запрашиваете разрешение перед пользователем, используя новую функцию. Работа 100%.

Это то, что вы добавляете к манифесту:

"permissions": ["tabs","http://*/*","https://*/*"],

После этого вы можете использовать:

chrome.permissions.request 

и

chrome.permissions.contains

Ответ 2

Так как chrome 16 вы можете установить опциональную передачу во время установки и запросить повышенное разрешение во время выполнения. См. https://developer.chrome.com/extensions/permissions

в manifest.json:

  {
    "name": "My extension",
    ...
    "optional_permissions": [ "tabs", "http://bar.site.com/" ],
    ...
  }

в 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();
      }
    });
  });

Ответ 3

Опираясь на ту же проблему с моим расширением, я пришел к этому сообщению, ища тот же вопрос. В некоторых случаях есть обновление, которое кажется приемлемым. В соответствии с: https://support.google.com/chrome_webstore/answer/1054246 и пример на http://developer.chrome.com/extensions/permission_warnings.html

Кажется, что обновление ваших прав фактически отключит ваше расширение, однако оно предложит пользователю о вашем изменении и позволит легко "повторно включить".

Это может быть неприемлемо в вашем сценарии, однако в моем случае выигрыш новых пользователей с добавленным разрешением по умолчанию превосходит риск того, что существующий пользователь не будет повторно включен. Поскольку это значительно лучше, чем раньше, когда ваши существующие пользователи не знали о том, что расширение отключено...

Я знаю, что этот пост устарел, но поскольку он является лучшим результатом Google по этому вопросу, подумал, что обновление будет хорошим для будущих ссылок...