@animelist/auth
v0.1.1
Published
Provides an API to authenticate users with `MyAnimeList`
Downloads
65
Maintainers
Readme
@animelist/auth
Table of Contents
Contents
Provides an interface to authenticate users with MyAnimeList
oauth2 provider.
You may want to use one of the implementations of this package instead:
If you want to use other framework or want to implement your own, we also provide a handler that uses the web standard Request
/Response
createMyAnimeListFetchHandler the same handler is just reexported from the nextjs
and sveltekit
implementations.
Install
In case you want to use this package directly, install it with your favorite package manager:
npm
npm install @animelist/auth
yarn
yarn add @animelist/auth
pnpm
pnpm install @animelist/auth
Environment variables
These are the environment variables are used by the @animelist/auth
MAL_CLIENT_ID
The id of your MyAnimeList client.MAL_CLIENT_SECRET
The secret key of your MyAnimeList client.MAL_REQUEST_DEBUG
Enable logging for the request going to MyAnimeList.- This also reads the
NODE_ENV
to only show logs when not in production.
- This also reads the
MAL_SECRET_KEY
The secret key used for encode/decode the user session.PUBLIC_MAL_API_URL
The url of the endpoint that handlers the requests, by default is/api/myanimelist
Get Current User
After the user is logged you can get the current user information using getServerSession
.
Which returns null
if the user is not logged or UserSession
:
type UserSession = {
userId: number;
refreshToken: string;
accessToken: string;
};
import { getServerSession } from "@animelist/auth/server";
const session = await getServerSession(cookies);
if (session) {
console.log("User is logged in");
}
You can also use getRequiredServerSession(cookies)
which throws an error if the user is not logged in.
If you want to get the user information you can use the
@animelist/client
.
import { MALClient } from "@animelist/client";
const client = new MALClient({ accessToken });
const user = await client.getMyUserInfo();
Good to know
If the MAL_SECRET_KEY
is not set you will receive this warning:
⚠️ 'process.env.MAL_SECRET_KEY' was not set, using a default secret key
You can generate a secret key using:
openssl rand --base64 32
Or this beauty:
echo "console.log(require('crypto').randomBytes(32).toString('base64'))" | node
License
This project is licensed under the MIT License - see the LICENSE file for details.