Monetiseer je Chrome-extensie met OpenID Connect (OAuth 2.0) authenticatie
Leer hoe je je Chrome-extensie kunt monetariseren door gebruikersauthenticatie toe te voegen.
Leer hoe je je Chrome-extensie kunt monetariseren door gebruikersauthenticatie toe te voegen.
Chrome-extensies zijn een geweldige manier om de functionaliteit van de Chrome-browser uit te breiden. Wanneer je een populaire extensie hebt, wil je deze misschien monetariseren door pro-functies aan te bieden aan gebruikers die ervoor betalen. Gebruikersauthenticatie is noodzakelijk voor dit doel:
Aan de andere kant willen we niet vasthouden aan het Google-accountsysteem, omdat je gebruikers misschien liever andere accounts gebruiken, of je meerdere services hebt die je wilt integreren met hetzelfde identiteitsysteem.
Een kort overzicht van de voordelen van het gebruik van OpenID Connect (OIDC) voor authenticatie:
In deze tutorial gebruiken we Logto als de OIDC-provider, wat een Auth0-alternatief is voor het bouwen van identiteitsinfrastructuren.
Laten we beginnen!
Aangenomen dat je een "Sign in"-knop in de popup van je Chrome-extensie plaatst, zal de authenticatiestroom er als volgt uitzien:
Voor andere interactieve pagina's in je extensie hoef je alleen de Extensie-popup deelnemer te vervangen door de naam van de pagina. In deze tutorial richten we ons op de popuppagina.
Om aan de slag te gaan, maak je een Logto-applicatie met het type "Single page app". Volg deze stappen om een Logto-applicatie te maken:
Installeer Logto SDK in je Chrome-extensieproject:
manifest.jsonLogto SDK vereist de volgende machtigingen in de manifest.json:
permissions.identity: Vereist voor de Chrome Identity API, die wordt gebruikt om in te loggen en uit te loggen.permissions.storage: Vereist voor het opslaan van de gebruikerssessie.host_permissions: Vereist voor de Logto SDK om te communiceren met de Logto API's.In het achtergrondscript van je Chrome-extensie, initialiseer de Logto SDK:
Vervang <jouw-logto-endpoint> en <jouw-logto-app-id> met de daadwerkelijke waarden. Je kunt deze waarden vinden op de applicatiepagina die je zojuist hebt gemaakt in de Logto-console.
Als je geen achtergrondscript hebt, kun je de officiële gids volgen om er een te maken.
Vervolgens moeten we luisteren naar het bericht van andere extensiepagina's en het authenticatieproces afhandelen:
Je merkt misschien dat er twee omleidings-URI's worden gebruikt in de bovenstaande code. Ze zijn beide gemaakt door chrome.identity.getRedirectURL, wat een ingebouwde Chrome-API is om een omleidings-URL te genereren voor auth-stromen. De twee URI's zullen zijn:
https://<extensie-id>.chromiumapp.org/callback voor inloggen.https://<extensie-id>.chromiumapp.org/ voor uitloggen.Merk op dat deze URI's niet toegankelijk zijn, en ze worden alleen gebruikt voor Chrome om specifieke acties voor het authenticatieproces te activeren.
Nu moeten we de Logto-applicatie-instellingen bijwerken om de zojuist gemaakte omleidings-URI's toe te staan.
https://<extensie-id>.chromiumapp.org/callback.https://<extensie-id>.chromiumapp.org/.chrome-extension://<extensie-id>. De SDK in de Chrome-extensie zal deze oorsprong gebruiken om te communiceren met de Logto API's.Vergeet niet <extensie-id> te vervangen door je eigenlijke extensie-ID. Je kunt de extensie-ID vinden op de chrome://extensions-pagina.
Na het bijwerken van de instellingen, zouden je Logto-applicatie-instellingen er als volgt uit moeten zien:

We zijn er bijna! Laten we de inlog- en uitlogknoppen en andere noodzakelijke logica toevoegen aan de popuppagina.
In het popup.html-bestand:
In het popup.js-bestand (ervan uitgaande dat popup.js is opgenomen in de popup.html):
Nu kun je de authenticatiestroom in je Chrome-extensie testen:
Omdat Chrome uniforme opslag-API's biedt, kunnen, in plaats van de inlog- en uitlogstroom, alle andere Logto SDK-methoden direct op de popuppagina worden gebruikt.
In je popup.js kun je de LogtoClient-instantie hergebruiken die in het achtergrondscript is gemaakt, of een nieuwe maken met dezelfde configuratie:
Dan kun je een functie maken om de authenticatiestatus en het gebruikersprofiel te laden:
Je kunt ook de loadAuthenticationState-functie combineren met de inlog- en uitloglogica:
Hier is een voorbeeld van de popuppagina met de authenticatiestatus:

Voor meer informatie over de SDK kun je de officiële documentatie van de browser-SDK raadplegen. De browser-SDK heeft dezelfde API's als de Chrome extensie SDK.
browser of vergelijkbaar instellen om onnodige bundeling van Node.js-modules te vermijden.Bekijk ons voorbeeldproject voor een volledig voorbeeld met TypeScript, Rollup en andere configuraties.
Met geauthenticeerde gebruikers kun je nu veilig betaalde functies aanbieden in je Chrome-extensie. Je kunt bijvoorbeeld de abonnementensatus van de gebruiker opslaan in het gebruikersprofiel en dit controleren wanneer de gebruiker de extensie opent.
Door de kracht van Chrome-extensies en Logto te combineren, kun je een flexibeler en aanpasbaarere extensie bouwen die zowel jij als je gebruikers zullen waarderen.