3.6 KiB
sidebar_position |
---|
2 |
Setting up
This page will teach you how to set up the Llama bot web API.
Steps
Pre-requirements
- Node.js version 14 or greater
- Discord account
- Google Firebase account
Discord
-
Go to the Discord Developer Portal and create an application. Select one if you already have it. Using the same application used by the discord bot is recommended.
-
Go to the OAuth2 tab.
-
Add the following redirect URIs:
- localhost for testing (http only):
http://localhost:5001/<YOUR_FIREBASE_PROJECT_ID_HERE>/us-central1/api/auth
- http:
http://us-central1-<YOUR_FIREBASE_PROJECT_ID_HERE>.cloudfunctions.net/api/auth
- https:
https://us-central1-<YOUR_FIREBASE_PROJECT_ID_HERE>.cloudfunctions.net/api/auth
- localhost for testing (http only):
Firebase
- must be the same project that the llama bot is using
-
Create a firebase project.
-
Create/Select a project. Make sure it is using the blaze plan.
-
Go to the
Firestore Database
tab and enable it (using production mode is highly recommended).
Local
-
Clone the llama-bot-web-api repository
Using HTTPS
git clone https://github.com/llama-bot/llama-bot-web-api.git
Using SSH:
git clone git@github.com:llama-bot/llama-bot-web-api.git
-
Edit
functions/src/config.json
.{ "region": "FIREBASE_FUNCTIONS_REGION_HERE", // Region where firebase functions is hosted in. Example: us-central1 "scopes": ["DISCORD", "SCOPES", "HERE"] // Discord OAuth2 scopes. Example: ["identify", "email", "guilds"] }
-
Create
functions/src/secret.json
and fill in the data.{ "projectID": "FIREBASE_PROJECT_ID_HERE", // Firebase project ID "clientID": "DISCORD_CLIENT_ID_HERE", // Discord OAuth2 Client ID "clientSecret": "DISCORD_CLIENT_SECRET_HERE", // Discord OAuth2 Client Secret "secret": "SECRET_COOKIE_KEY_HERE" // secret to be used for express session }
-
Go to this link, select your firebase project and download the firebase admin sdk key by pressing the "Generate new private key" button. Rename it to
firebase-adminsdk.json
and put it infunctions/src/
. -
Install firebase cli tools.
npm install -g firebase-tools
-
Select firebase project
firebase use <firebase-project-id>
-
Go to
functions
directory and install necessary dependencies.npm install
Testing
-
Start local test server by running the following command in the
functions
directory.npm run serve
-
Open locally served API and log in with your discord account.
:::warning HTTPS won't work when serving locally. Use HTTP instead. :::
Login test URI:
http://localhost:5001/<YOUR_FIREBASE_PROJECT_ID_HERE>/us-central1/api/login
-
If everything is set up correctly, this should have added a new user in firestore database.
Deploying
Deploying the functions to production is as simple as running the following command:
firebase deploy
Production API URL: https://us-central1-<YOUR_FIREBASE_PROJECT_ID_HERE>.cloudfunctions.net/api
.
More info
- discord developers documentation: https://discord.com/developers/docs
- firebase admin sdk documentation: https://firebase.google.com/docs