Giter Club home page Giter Club logo

commercelayer_js_auth's Introduction

Commerce Layer JS Auth

A JavaScript Library wrapper that helps you use the Commerce Layer API for Authentication.

What is Commerce Layer?

Commerce Layer is a multi-market commerce API and order management system that lets you add global shopping capabilities to any website, mobile app, chatbot, wearable, voice, or IoT device, with ease. Compose your stack with the best-of-breed tools you already mastered and love. Make any experience shoppable, anywhere, through a blazing-fast, enterprise-grade, and secure API.

Table of contents


Getting started

To get started with Commerce Layer JS Auth, you need to install it and add it to your project.

Installation

Commerce Layer JS Auth is available as an npm package.

// npm
npm install @commercelayer/js-auth

// yarn
yarn add @commercelayer/js-auth

Using ES6 import

You can use either the ES6 default or single/multiple named import with the SDK as follow:

import CLayerAuth from '@commercelayer/js-auth'

// or

import { authentication } from '@commercelayer/js-auth'

In the examples below, we will use the latter solution (named import) and define only the functions we need, based on what kind of app and authorization flow we're going to use.

Authorization flows

To get an access token, you need to execute an OAuth 2.0 authorization flow by using a valid application as the client.

Grant type Sales channel Integration Webapp
Client credentials
Password
Refresh token
Authorization code

Remember that, for security reasons, access tokens expire after 2 hours. Authorization codes expire after 10 minutes.

Check our documentation for further information on each single authorization flow.

Use cases

Based on the authorization flow and application you want to use, you can get your access token in a few simple steps. These are the most common use cases:

Sales channel (client credentials)

Sales channel applications use the client credentials grant type to get a "guest" access token.

Steps

  1. Create a sales channel application on Commerce Layer and take note of your API credentials (base endpoint, client ID, and the ID of the market you want to put in scope)

  2. Use this code to get your access token:

  const token = await authentication('client_credentials', {
    clientId: 'your-client-id',
    slug: 'your-organization-slug',
    scope: 'market:{id}'
  })
  
  console.log('My access token: ', token.accessToken)
  console.log('Expiration date: ', token.expires)

Sales channel (password)

Sales channel applications can use the password grant type to exchange a customer credentials for an access token (i.e., to get a "logged" access token).

Steps

  1. Create a sales channel application on Commerce Layer and take note of your API credentials (base endpoint, client ID, and the ID of the market you want to put in scope)

  2. Use this code (changing user name and password with the customer credentials) to get the access token:

  const token = await authentication('password', {
    clientId: 'your-client-id',
    slug: 'your-organization-slug',
    scope: 'market:{id}',
    username: '[email protected]',
    password: 'secret'
  })
  
  console.log('My access token: ', token.accessToken)
  console.log('Expiration date: ', token.expires)
  console.log('My refresh token: ', token.refreshToken)

Sales channel applications can use the refresh token grant type to refresh a customer access token with a "remember me" option:

  const newToken = await authentication('refresh_token', {
    clientId: 'your-client-id',
    slug: 'your-organization-slug',
    scope: 'market:{id}',
    refreshToken: 'your-refresh-token'
  })

Integration (client credentials)

Integration applications use the client credentials grant type to get an access token for themselves.

Steps

  1. Create an integration application on Commerce Layer and take note of your API credentials (client ID, client secret, and base endpoint)

  2. Use this codes to get the access token:

   const token = await authentication('client_credentials', {
     clientId: 'your-client-id',
     clientSecret: 'your-client-secret',
     slug: 'your-organization-slug',
   })

   console.log('My access token: ', token.accessToken)
   console.log('Expiration date: ', token.expires)

Webapp (authorization code)

Available only for browser applications

Webapp applications use the authorization code grant type to exchange an authorization code for an access token.

Steps

In this case, first, you need to get an authorization code, then you can exchange it with an access token:

  1. Create a webapp application on Commerce Layer and take note of your API credentials (client ID, client secret, callback URL, base endpoint, and the ID of the market you want to put in scope)

  2. Use this code to authorize your webapp on Commerce Layer:

  curl -g -X GET \
  'https://dashboard.commercelayer.io/oauth/authorize?client_id=your-client-id&redirect_uri=https://yourdomain.com/redirect&scope=market:1234&response_type=code' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json'

or copy and paste this URL in your browser:

  https://dashboard.commercelayer.io/oauth/authorize?client_id=your-client-id&redirect_uri=https://yourdomain.com/redirect&scope=market:1234&response_type=code
  1. Once you've authorized the application, you will be redirected to the callback URL:

    Callback URL with Authorization Code

    Use this code to get the access token:

   const token = await authentication('authorization_code', {
     clientId: 'your-client-id',
     clientSecret: 'your-client-secret',
     callbackUrl: '<https://yourdomain.com/callback>',
     slug: 'your-organization-slug',
     scope: 'market:{id}',
     code: 'your-auth-code'
   })

   console.log('My access token: ', token.accessToken)
   console.log('Expiration date: ', token.expires)

Provisioning

Provisioning applications use a specific authentication function which implicitly uses the client credentials grant type to get an access token.

Steps

  1. Access your personal provisioning application on Commerce Layer dashboard and take note of your Provisioning API credentials (client ID, client secret)

  2. Use this codes to get the access token:

   import { provisioning } from '@commercelayer/js-auth'

   const token = await provisioning.authentication({
     clientId: 'your-client-id',
     clientSecret: 'your-client-secret'
   })

   console.log('My access token: ', token.accessToken)
   console.log('Expiration date: ', token.expires)

Contributors guide

  1. Fork this repository (learn how to do this here).

  2. Clone the forked repository like so:

git clone https://github.com/<your username>/commercelayer-js-auth.git && cd commercelayer-js-auth
  1. Make your changes and create a pull request (learn how to do this).

  2. Someone will attend to your pull request and provide some feedback.

Need help?

  1. Request an invite to join Commerce Layer's Slack community.

  2. Create an issue in this repository.

  3. Ping us on Twitter.

License

This repository is published under the MIT license.

commercelayer_js_auth's People

Contributors

acasazza avatar bolajiayodeji avatar dependabot[bot] avatar marcomontalbano avatar pviti avatar semantic-release-bot avatar sfiorucci avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.