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:
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.
İ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:
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
veyapermissions
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()
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()
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ındakipermissions
veoptional_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()
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()
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
-
izinler
-
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
-
izinler
-