"OAuth2 wurde nicht gewährt oder widerrufen", wenn versucht wird, die kostenlose Testversion in der Chrome-Erweiterung zu bewerten

8

Ich versuche, eine kostenlose Testphase für meine Chrome-Erweiterung anzubieten und habe die Chrome Dokumentation darüber, wie dies erreicht werden kann.

Wenn meine Erweiterung geladen wird, protokolliert das Hintergrundskript den folgenden Fehler in der Konsole:

  

Unchecked runtime.lastError beim Ausführen von identity.getAuthToken: OAuth2 nicht erteilt oder gesperrt.

Die Konsole zeigt auf den Aufruf von chrome.identity.getAuthToken als Täter. Hier ist der relevante Code in meinem Hintergrundskript:

%Vor%

Mein Manifest ist so eingerichtet (einige Teile wurden aus Platzgründen weggelassen):

%Vor%

Folgendes habe ich versucht oder bestätigt:

  1. Die Client-ID stimmt mit dem Wert in der Google-Entwicklerkonsole überein, der mit der ID meiner Erweiterung generiert wurde.
  2. Die Chrome Web Store-API ist in der Google-Entwicklerkonsole aktiviert (sie ist die einzige aktivierte API).
  3. Der Schlüssel im Manifest stimmt mit dem Wert überein, der generiert wird, nachdem ich die Erweiterung im Web Store platziert habe.
  4. Der Aufruf von getAuthToken mit aktiviertem interaktiven Modus führt zum gleichen Fehler.
  5. Ich habe meinen Code mit diesem Beispiel und nichts verglichen springt auf mich als wesentlich anders aus (obwohl ein zusätzliches Paar Augen zu bestätigen würde nicht weh tun).

Wenn es darauf ankommt, verwende ich Chrome 42.0.2311.135 (64-Bit) unter Mac OS X.

Irgendwelche Ideen darüber, was den Fehler verursacht und was ich ändern muss, damit es weggeht, damit ich das Authentifizierungs-Token und die Lizenz nachschlagen kann?

    
Erik Gillespie 11.05.2015, 16:53
quelle

1 Antwort

10

Code-mäßig ist die einzige Änderung, die benötigt wird, um den interaktiven Modus zu aktivieren:

%Vor%

Es gab auch ein paar Probleme mit PEBCAK. Nämlich:

  1. Es kann einige Sekunden dauern, bis die interaktive Authentifizierungsseite angezeigt wird. Dies scheint ein Problem mit der Bandbreite zu sein. Dies könnte ein Teil davon sein, warum die Dokumentation vorschlägt, die Authentifizierungsanfrage bei einer Art Benutzerinteraktion auszulösen und nicht wann Die Erweiterung wird zuerst geladen.
  2. Das interaktive Wechseln zwischen false und true und das erneute Laden der Erweiterung war kein ausreichender Funktionstest. Das Ergebnis von getAuthToken wird zwischengespeichert. Wenn ich die Berechtigung entziehe und dann meine Erweiterung aktualisiere oder sogar lösche und wieder hinzufüge, wird das gleiche Token für eine gewisse Zeit weiter zurückgegeben. Der Neustart von Chrome mit aktiviertem interaktivem Modus hat mich zu dieser Lösung geführt.
Erik Gillespie 11.05.2015, 19:02
quelle