This is a Node.js sample application to demonstrate how to work with Oyster Embedded Partner API. Here's how you can get the project running on your local machine for development and testing purposes.
Please follow the detailed documentation: Getting Started with Embedded Partners for the required Initial Setup.
First, you'll need to clone the repository to your local machine. Open a terminal and run the following command:
git clone https://github.com/oysterhr/partner-node-sample-app.git
cd partner-node-sample-appOnce you have cloned the repository, you'll need to set up the environment variables. You can find an example in the .env.example file. Create a new file named .env in the root directory and copy the contents of .env.example into it.
cp .env.example .envThen, fill in the values for the following variables:
// .env
OYSTER_CLIENT_ID= // Your Oyster client ID
OYSTER_CLIENT_SECRET= // Your Oyster client secret
OYSTER_AUTHORIZATION_URL= // The authorization URL
OYSTER_REDIRECT_URL= // The redirect URL configured for your Oyster Developer Application.Next, install the project dependencies by running:
npm installThe application uses SQLite for the database. To set up the database, run the following command:
npx sequelize-cli db:migrateThis will create a new SQLite database file in the root directory as specified in the config/config.json file.
To start the application, run:
npm startThis will start the server on the default port 3000. You can access the application by visiting http://localhost:3000 in your web browser.
config/config.json: This file is used to configure the database settings for different environments (development, test, and production). It uses SQLite as the database adapter and sets up the database file paths for each environment.routes/partner.js: Handles the/sessionroute that finds the client by the client_id, makes a POST request to the OysterHR Embedded API to create a new session using the client's access token, and then redirects to an OysterHR URL with the new session token.routes/apiAuth.js: Handles OAuth authorization callbacks and token refreshes. Handles the follwoing routes:/callback: Receives an authorization code from the OysterHR Embedded API, exchanges it for access and refresh tokens, updates the client record with these tokens, and then redirects to the root URL./refresh_token: Uses the stored refresh token to request a new access token when the current one expires, updates the client record, and redirects to the root URL.
- The
app.jsfile sets up the express application, middleware, and routes. - The
client.jsfile defines the Sequelize model for the Client table. The table has the following fields:client_idrefresh_tokenaccess_token
.env.example: An example file that lists the environment variables required for the application to function. These variables include the client ID, client secret, authorization URL, and the redirect URL for OAuth callbacks.
For further customization and development, refer to the respective files and directories in the project. We have left helpful comments with the files to help explain their respective funcationality.
- Make sure to keep your
.envfile secure and do not commit it to version control. - Within
routes/partner.jsfile, after receiving new Session Token, you should redirect to the Oyster Platform via the route:https://app.oysterhr.com/embedded/transfer?token{PLACE THE GENERATE TOKEN HERE}