/oauth-electron

General OAuth support for electron App.

Primary LanguageJavaScriptMIT LicenseMIT

drawing 1

Build Status codecov npm GitHub license Maintenance Donate

Use OAuth in a simple way inside your electron App.

Installation

add it to your electron project using npm install oauth-electron --save or yarn add oauth-electron

Usage

require oauth-electron exports a function that requires a javascript object and an electron window, as seen on the next example:

Oauth1

const login = require(`oauth-electron`)

let info = {
    key: ***,
    secret: ***,
    accessUrl: ***,
    authenticateUrl: ***,
    version: ***,
    authCallback: ***,
    signatureMethod: ***,
},
window = new BrowserWindow({webPreferences: {nodeIntegration: false}});

login.oauth1(info, window)

the login function will return a Promise with the access token and secret

{
    token: ***,
    tokenSecret: ***
}

Oauth2

const login = require('oauth-electron')
const { BrowserWindow, session } = require('electron')

let info = {
    key: ***,
    secret: ***,
    scope: ***,
    baseSite: ***,
    authorizePath: ***,
    accessTokenPath: ***,
    redirectUrl: ***,
    responseType: ***, //this is optional if not provided it will default to 'code'
},
window = new BrowserWindow({webPreferences: {nodeIntegration: false}});

login.oauth2(info, window, session)

the login function will return a Promise with the access token and secret

{
    accessToken: ***,
    refreshToken?: ***,
    <others: ***>
}

Security

Consider this before you integrate this library in your application:

  • It is a bad practice to hardcode keys & secrets in code that is going to be shipped.
  • If you are looking to have your own backend, consider using it for authentication with 3rd party services. IETF RFC 8252.

Migration V1.x to V2.x

  • Please refer to the response of the service, as there will probably be extra fields in the response
  • session is required to be passed as events of chromium have changed

Migration V0.x to V1.x

  • there is no more need for the oauth object, info becomes a basic object with the properties stated in the usage step.
  • the return object has a different format.
logo: Award,Passport graphics by Freepik from Flaticon are licensed under CC BY 3.0. Made with Logo Maker