/node-ahaio-oauth

A node module to assist in Aha.io OAuth2 client implementation.

Primary LanguageJavaScriptMIT LicenseMIT

Aha.io OAuth2 Wrapper for Javascript

NPM package for fascilitating the OAuth2 flow for the AHA.io API.

Getting Started

Install the NPM package.

$ npm install aha-io-oauth --save

Require the package in your application.

var AhaOAuthClient = require('aha-io-oauth');

Create an App

To start one will need to obtain a client ID and secret. This is done by creating an application in your Aha account at a URL similar to the one below:

https://yourdomain.aha.io/oauth/applications/

Initialization

The OAuth client is instantiated by passing in the Client ID and Secret (as well as your organizations subdomain) that you generated in the previous step.

let ahaOAuth = new AhaOAuthClient(
    process.env.AHA_CLIENT_ID,
    process.env.AHA_CLIENT_SECRET,
    process.env.AHA_SUBDOMAIN
)

Generating the Auth URL

To start the OAuth process, one needs to generate a link to present to the user that will take them to Aha to authorize

let ahaAuthUrl = ahaOAuth.authorizeUri( 'http://example.com/aha/oauth', {
    responseType: 'code',
    state: `${some-id}`
})

Generating a Token

After the user authenticates and authorizes your application by following the link generated in the previous step, Aha will call your Redirect URI. Below is a simple express app for generating an OAuth token.

const express = require('express')
const app = express()
const port = 3000
app.get('/aha/oauth', async (req, res) => {
    const { code, state } = req.query
    await ahaOAuth.authorize({
    	  code: code,
    	  redirectUri: 'http://example.com/aha/oauth'
    })
    const token = ahaOAuth.token()
    // do something with the token
})
app.listen(port, () => console.log(`Examplee app listening on port ${port}!`))

Instantiate a new client. Currently the wrapper uses basic HTTP authentication, so this requires a username, password, your AHA subdomain and an optional options object. In the options you can pass {useSubdomain: false} if you want to use secure.aha.io subdomain instead of your-subdomain.aha.io.

// If you want to specify an API key when creating a client
var client = AhaIO('username', 'password', 'subdomain');

You can also use AHA's secure.aha.io. The subdomain is always required for authentication purposes.

var client = AhaIO('username', 'password', 'subdomain', { useSubdomain: false });