21

Obecnie mamy rozszerzenie w Chrome Web Store z wieloma użytkownikami. Aktualnie żądamy dostępu do strony foo.site.com, ale teraz chcemy zaktualizować nasze uprawnienia, abyśmy mogli uzyskać adres bar.site.com.Uaktualnianie uprawnień do rozszerzeń przeglądarki Chrome

Jak rozumiem teraz, jeśli popchniemy nową aktualizację (nową wersję rozszerzenia do Chrome Web Store) wymagającą tych dwóch uprawnień, istniejący użytkownicy będą mieli wyłączone rozszerzenie do momentu ręcznego ponownego włączenia. Nowi użytkownicy, którzy pobiorą rozszerzenie po aktualizacji, będą w porządku i będą mieli oba uprawnienia. Jednak wyłączenie naszych obecnych użytkowników nie jest opcją.

Jakikolwiek sposób obejścia tego?

Sprawdziliśmy opcjonalne uprawnienia, które rozwiązałyby problem dla obecnych użytkowników (chcielibyśmy po prostu poprosić ich o kliknięcie przycisku, aby uaktualnić uprawnienia i być na bieżąco). Jednak dla nowych użytkowników nie tylko będą musieli zainstalować rozszerzenie, ale także zaakceptować opcjonalne uprawnienia, które są do bani. Czy istnieje sposób na to, aby nowi użytkownicy akceptowali wszystkie uprawnienia (opcjonalne i wymagane) w czasie instalacji?

+4

Ty naprawdę nie czytać pytanie prawda. – aloo

+2

Zajmowałem się tym: 'Jednak wyłączenie naszych obecnych użytkowników nie jest opcją. Jakikolwiek sposób obejść to?' –

+3

Wydaje się, że użyteczną funkcją jest zadeklarowanie niektórych opcjonalnych_zapytań, które będą wymagane przy instalacji dla nowych użytkowników. Złożyć go na http://crbug.com/new? Możesz także zastanowić się, czy sensowne byłoby przekształcenie wszystkich twoich uprawnień w opcjonalne_permisje, abyś mógł ich zażądać raz po instalacji, czy też uprawnienie beta activeTab (http://developer.chrome.com/beta/extensions/activeTab.html) działałoby, zamiast zawsze uzyskiwać dostęp do bar.site.com. –

Odpowiedz

8

Tak, istnieje rozwiązanie. Ustawiono nowe uprawnienia jako opcjonalne, a następnie żądasz pozwolenia, zanim użytkownik użyje nowej funkcji. To jest praca w 100%.

To jest to, co można dodać do manifestu:

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

Po tym można użyć:

chrome.permissions.request 

i

chrome.permissions.contains 
+1

Dla nowych użytkowników będą musieli zaakceptować uprawnienia do zainstalowania rozszerzenia i zaakceptować inny zestaw uprawnień do – aloo

+0

@Gabriele Jednak chrome.permissions.request musi być wywołany wewnątrz "gestu użytkownika", prawda? Jaki gest użytkownika wykorzystałeś w tym celu? Co jeśli chcę, aby to się stało, gdy użytkownik ładuje określoną stronę internetową? –

+0

W moim przypadku mam mały panel ustawień, który jest wstrzykiwany bezpośrednio na stronie. Kiedy ją przełączysz, poprosi o pozwolenie. Myślę, że było to trochę bardziej skomplikowane i wymagało użycia wiadomości. Utworzone przeze mnie rozszerzenie nazywa się HN Special i można je znaleźć na GitHub. Spróbuj googlować :) –

4

wychodzi ten sam problem z moim rozszerzeniu, I pojawił się ten post, szukając tego samego pytania. Istnieje aktualizacja, która w niektórych przypadkach wydaje się akceptowalna. Według: https://support.google.com/chrome_webstore/answer/1054246 i przykład na http://developer.chrome.com/extensions/permission_warnings.html

Wydaje się, że aktualizowanie uprawnień będą w rzeczywistości wyłączyć rozszerzenie, jednak to poprosi użytkownika o swojej zmianie i umożliwiają łatwe „włączyć”.

Może być niedopuszczalne w twoim scenariuszu, jednak w moim przypadku wygrać nowych użytkowników z dodanym pozwoleniem domyślnie przebija ryzyko, że istniejący użytkownik nie ponownie włączy. Ponieważ jest to znacznie lepsze niż wcześniej, gdy obecni użytkownicy nie byli świadomi wyłączenia tego rozszerzenia ...

Wiem, że ten post jest stary, ale ponieważ jest to najlepszy wynik Google dla tego pytania, aktualizacja będzie dobra na przyszłość ...

+2

Czy jest sposób, że moi dawni użytkownicy otrzymują tylko opcjonalne okno z uprawnieniami, ale nowi użytkownicy otrzymują go tylko raz, gdy instalują rozszerzenie, a nie dwa razy - raz podczas instalacji i podczas korzystania z tych opcjonalnych funkcji. – Nakul

+0

@Nakul możesz użyć 'chrome.permissions.contains', aby sprawdzić, czy pozwolenie zostało już udzielone, czy też zostanie poproszony osobno. –

4

Ponieważ chrome 16 można ustawić opcjonalne_permission w czasie instalacji i poprosić o podwyższone uprawnienia w czasie wykonywania. Zobacz https://developer.chrome.com/extensions/permissions

w manifest.json:

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

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