chrome.permissions

Açıklama

Beyan edilen isteğe bağlı izinleri yükleme anında değil, çalışma zamanında istemek için chrome.permissions API'yi kullanın. Böylece, kullanıcılar izinlerin neden gerekli olduğunu anlar ve yalnızca gerekli izinleri verir.

Kavramlar ve kullanım

İzin uyarıları, bir API'nin sağladığı özellikleri açıklamak için bulunur ancak bu uyarılardan bazıları açıkça anlaşılmayabilir. Permissions API, geliştiricilerin izin uyarılarını açıklamalarına ve yeni özellikleri kademeli olarak kullanıma sunmalarına olanak tanır. Böylece, kullanıcılara uzantıyı risksiz bir şekilde tanıtabilirler. Böylece kullanıcılar ne kadar erişim vermek istediklerini ve hangi özellikleri etkinleştirmek istediklerini belirleyebilir.

Örneğin, isteğe bağlı izin uzantısının temel işlevi yeni sekme sayfasını geçersiz kılmaktır. Özelliklerden biri, kullanıcının o gün hedefini gösteriyor. Bu özellik yalnızca depolama iznini gerektirir. Bu izin, uyarı içermez. Uzantı, kullanıcıların aşağıdaki düğmeyi tıklayarak etkinleştirebileceği ek bir özelliğe sahiptir:

Ek özellikleri etkinleştiren bir uzantı düğmesi.
Ek özellikleri etkinleştiren bir uzantı düğmesi.

Kullanıcının en popüler sitelerini görüntülemek için aşağıdaki uyarının bulunduğu topSites izni gerekir.

topSites API için aksama uyarısı.
topSites API için uzantı uyarısı

İsteğe bağlı izinleri uygulama

1. Adım: Hangi izinlerin gerekli, hangilerinin isteğe bağlı olduğuna karar verin

Uzantılar hem gerekli hem de isteğe bağlı izinleri beyan edebilir. Genel olarak şunları yapmalısınız:

  • Gerekli izinleri, uzantınızın temel işlevi için gerekli olduğunda kullanın.
  • Uzantınızdaki isteğe bağlı özellikler için gerektiğinde isteğe bağlı izinleri kullanın.

Gerekli izinlerin avantajları:

  • Daha az istem: Bir uzantı, kullanıcıdan tüm izinleri kabul etmesini bir kez isteyebilir.
  • Daha basit geliştirme: Gerekli izinlerin mevcut olması garanti edilir.

İsteğe bağlı izinlerin avantajları:

  • Daha iyi güvenlik: Kullanıcılar yalnızca izinleri etkinleştirdiğinden uzantılar daha az izinle çalışır. bunları inceleyeceğiz.
  • Kullanıcılar için daha iyi bilgiler: Uzantılar, neden belirli bir izne ihtiyaç duyduğunu açıklayabilir Kullanıcı ilgili özelliği etkinleştirdiğinde
  • Daha kolay yükseltme: Uzantınızı yeni sürüme geçirdiğinizde Chrome, Yükseltme, gerekli yerine isteğe bağlı izinler ekler.

2. Adım: Manifest'te isteğe bağlı izinleri beyan edin

Uzantı manifestinizde isteğe bağlı izinleri optional_permissions anahtarıyla bildirin. izinler alanıyla aynı biçimi kullanın:

{
  "name": "My extension",
  ...
  "optional_permissions": ["tabs"],
  "optional_host_permissions": ["https://www.google.com/"],
  ...
}

Yalnızca çalışma zamanında keşfettiğiniz ana makineleri istemek istiyorsanız uzantınızın optional_host_permissions alanına "https://*/*" ifadesini ekleyin. Bu şekilde, "Permissions.origins" içinde eşleşen bir kaynak olduğu sürece herhangi bir kaynağı belirtebilirsiniz. şema.

İsteğe bağlı olarak belirtilemeyen izinler

Aşağıdaki istisnalarla çoğu Chrome uzantı izni isteğe bağlı olarak belirtilebilir.

İzin Açıklama
"debugger" chrome.debugger API'si Chrome'un uzaktan hata ayıklaması için alternatif aktarım protokolü hakkında daha fazla bilgi edinin.
"declarativeNetRequest" Uzantının, chrome.declarativeNetRequest API'sini kullanın.
"devtools" Uzantının Chrome Geliştirici Araçları'nı genişletmesine izin verir işlevi görür.
"geolocation" Uzantının, HTML5 coğrafi konum API'sini kullanmasına izin verir.
"mdns" Uzantının chrome.mdns API'si hakkında daha fazla bilgi edinin.
"proxy" Chrome'un proxy'sini yönetmek için uzantıya chrome.proxy API'sine erişim izni verir Ayarlar'da devre dışı bırakabilirsiniz.
"tts" chrome.tts API sentezlenmiş olarak oynatılır metin okuma (TTS).
"ttsEngine" chrome.ttsEngine API'sı, çalışan bir metin okuma (TTS) motoru tarafından yürütülür.
"wallpaper" Yalnızca ChromeOS. ChromeOS'i değiştirmek için chrome.wallpaper API'yi kullanın duvar kağıdı olarak kullanın.

Mevcut izinler hakkında daha fazla bilgi için İzin beyan etme bölümünü inceleyin ve uyarılarını dikkate alın.

3. Adım: İsteğe bağlı izinler isteyin

permissions.request() işlevini kullanarak bir kullanıcı hareketinin içinden izinleri isteyin:

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

Chrome, izinlerin eklenmesinden farklı uyarı mesajları ile sonuçlanırsa Chrome, kullanıcıdan gördüğü ve kabul ettiği anlamına gelir. Örneğin, önceki kod şöyle bir istemle sonuçlanabilir: bu:

Örnek bir izin onayı istemi.
Örnek bir izin onayı istemi.

4. Adım: Uzantının mevcut izinlerini kontrol edin

Uzantınızın belirli bir izne veya izin grubuna sahip olup olmadığını kontrol etmek için 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. Adım: İzinleri kaldırın

Artık ihtiyaç duymadığınız izinleri kaldırmanız gerekir. Bir izin kaldırıldıktan sonra permissions.request() çağrısı yapıldığında genellikle kullanıcıya sormadan izin eklenir.

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).
  }
});

Türler

Permissions

Özellikler

  • kaynaklar

    string[] isteğe bağlı

    Manifest'teki optional_permissions veya permissions anahtarlarında belirtilenler ve İçerik Komut Dosyaları ile ilişkili olanlar dahil olmak üzere ana makine izinlerinin listesi.

  • izinler

    string[] isteğe bağlı

    Adlandırılmış izinlerin listesi (ana makineleri veya kaynakları içermez).

Yöntemler

contains()

Söz 'nı inceleyin.
chrome.permissions.contains(
  permissions: Permissions,
  callback?: function,
)

Uzantının belirtilen izinlere sahip olup olmadığını kontrol eder.

Parametreler

  • izinler
  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (result: boolean) => void

    • sonuç

      boolean

      Uzantı belirtilen izinlere sahipse doğru değerini alır. Bir kaynak hem isteğe bağlı izin hem de içerik komut dosyası eşleşme kalıbı olarak belirtilirse her iki izin de verilmediği sürece false değeri döndürülür.

İadeler

  • Promise<boolean>

    Chrome 96 ve sonraki sürümler 'nı inceleyin.

    Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.

getAll()

Söz 'nı inceleyin.
chrome.permissions.getAll(
  callback?: function,
)

Uzantının mevcut izin grubunu alır.

Parametreler

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (permissions: Permissions) => void

    • izinler

      Uzantının etkin izinleri. origins özelliğinin, manifest dosyasındaki permissions ve optional_permissions anahtarlarında belirtilen ve İçerik Komut Dosyaları ile ilişkili olanlardan verilen kaynakları içereceğini unutmayın.

İadeler

  • Promise<Permissions>

    Chrome 96 ve sonraki sürümler 'nı inceleyin.

    Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.

remove()

Söz 'nı inceleyin.
chrome.permissions.remove(
  permissions: Permissions,
  callback?: function,
)

Belirtilen izinlere erişim kaldırır. İzinlerin kaldırılmasında herhangi bir sorun olursa runtime.lastError ayarlanır.

Parametreler

  • izinler
  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (removed: boolean) => void

    • kaldırıldı

      boolean

      İzinler kaldırıldıysa doğru değerini döndürür.

İadeler

  • Promise<boolean>

    Chrome 96 ve sonraki sürümler 'nı inceleyin.

    Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.

request()

Söz 'nı inceleyin.
chrome.permissions.request(
  permissions: Permissions,
  callback?: function,
)

Belirtilen izinlere erişim ister ve gerekirse kullanıcıya bir istem gösterir. Bu izinler, manifestin optional_permissions alanında tanımlanmalı veya kullanıcı tarafından alıkoyulmuş gerekli izinler olmalıdır. Kaynak kalıplarındaki yollar yoksayılır. İsteğe bağlı kaynak izinlerinin alt kümelerini isteyebilirsiniz. Örneğin, manifest'in optional_permissions bölümünde *://*\/* değerini belirtirseniz http://example.com/ için istekte bulunabilirsiniz. İzin isterken herhangi bir sorun olursa runtime.lastError ayarlanır.

Parametreler

  • izinler
  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (granted: boolean) => void

    • izin verildi

      boolean

      Kullanıcı belirtilen izinleri verdiyse doğru değerini döndürür.

İadeler

  • Promise<boolean>

    Chrome 96 ve sonraki sürümler 'nı inceleyin.

    Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.

Etkinlikler

onAdded

chrome.permissions.onAdded.addListener(
  callback: function,
)

Uzantı yeni izinler edindiğinde tetiklenir.

Parametreler

  • geri çağırma

    işlev

    callback parametresi şu şekilde görünür:

    (permissions: Permissions) => void

onRemoved

chrome.permissions.onRemoved.addListener(
  callback: function,
)

Uzantıdan izinlere erişim kaldırıldığında tetiklenir.

Parametreler

  • geri çağırma

    işlev

    callback parametresi şu şekilde görünür:

    (permissions: Permissions) => void