@opplysningen1881/inn-js v1.2.0
INN JS Library
Framework independent library for integrating web applications with Opplysningen INN Single Sign-On solution.
Registering a new application
Information concerning registering a new application with Opplysningen INN can be found in Opplysningen INN Single Sign-On documentation
Installation
The INN JS Library is available through NPM, and can be installed either using npm or yarn
npm
$ npm install @opplysningen1881/inn-jsUsage
Initialize the client
import innClient from '@opplysningen1881/inn-js';
innClient.init({
    appName: 'Example app', // Name of the application registered through Opplysningen INN
    mode: 'development' // Or production
});Override the INN environment URLs
Usually the INN service URLs are decided based on the client mode.
The URLs may be overriden through three optional configuration properties. See example below:
import innClient from '@opplysningen1881/inn-js';
innClient.init({
    appName: 'Example app', // Name of the application registered through Opplysningen INN
    mode: 'development', // Or production
    requireConsent: true, // Used for sharing user information with the given application
    profileUrl: 'https://inn-override-sso.opplysningen.no/oidsso/js/inn/inn-background.png', // Overrides the default mode configuration
    profileBackgroundUrl: 'https://inn-override-sso.opplysningen.no/oidsso/welcome', // Overrides the default mode configuration
    proxyUrl: 'https://inn-override-spaproxy.opplysningen.no/proxy' // Overrides the default mode configuration
});The library must also be allowed to work with your application through query params. This is used for when the user does not want to register, i.e. "Continue without registration". To enable this, go to INN Self Service and add the application tag ALLOWEDQUERYPARAMS with value code;firstName;lastName;streetAddress;emailAddress;phoneNumber;zipcode;additionalAddressInfo;Deliverytime;pickupPoint.
Add login button to your application
// HTML
<div id="container-for-login-button"></div>
// JavaScript
import innClient from '@opplysningen1881/inn-js';
function handleSuccess(token) {
    // Code for handling login success
}
function handleError() {
    // Code for handling login error
}
innClient.addLoginButtonTo('container-for-login-button', handleSuccess, handleError);Add the INN checkout button to your application
// HTML
<div id="container-for-checkout-button"></div>
// JavaScript
import innClient from '@opplysningen1881/inn-js';
function handleSuccess(token) {
    // Code for handling checkout success
}
function handleError() {
    // Code for handling login error
}
innClient.addCheckoutButtonTo('container-for-checkout-button', handleSuccess, handlerError);Fetching contact information
import innClient from '@opplysningen1881/inn-js';
async function fetchContactInfo() {
    try {
        const contactInfo = await innClient.getContactInfo();
        return contactInfo
    } catch (err) {
        // Handle error
    }
}Fetching delivery information
import innClient from '@opplysningen1881/inn-js';
async function fetchDeliveryInfo() {
    try {
        const deliveryInfo = await innClient.getDeliveryInfo();
        return deliveryInfo;
    } catch (err) {
        // Handle error
    }
};Fetching token for authorization to backend services
import innClient from '@opplysningen1881/inn-js';
innClient.getToken(); // Add as HTTP header (Authorization: Bearer <token>)Contributing
If you want to contribute, please submit a pull request for review. If you have questions or suggestions, please submit an issue.
Setup
$ npm installTest
Install Jest, then run with npm test.
$ npm testBuild
$ npm run buildLicense
Apache License 2.0. See LICENSE.md for details