PrismarineJS / node-yggdrasil

Node.js library to interact with Mojang's authentication system, known as Yggdrasil
Other
41 stars 28 forks source link

yggdrasil

NPM version Build Status Discord Gitter Irc

Try it on gitpod

A Node.js client for doing requests to yggdrasil, the Mojang authentication system, used for Minecraft and Scrolls.

Usage

$ npm install yggdrasil

Client

//init
const ygg = require('yggdrasil')({
  //Optional settings object
  host: 'https://authserver.mojang.com' //Optional custom host. No trailing slash.
});

//Authenticate a user
ygg.auth({
  token: '', //Optional. Client token.
  agent: '', //Agent name. Defaults to 'Minecraft'
  version: 1, //Agent version. Defaults to 1
  user: '', //Username
  pass: '', //Password
  requestUser: false //Optional. Request the user object to be included in response
}).then(
  (response)=>{},
  (error)=>{}
);

//Refresh an accessToken
ygg.refresh(oldAccessToken, clientToken, true).then(
  ({accessToken, clientToken, user?})=>{},
  (error)=>{}
);
// Note that requestUser is an optional parameter. If set to true, it requests the user object from Mojang's authentication servers as well.

//Validate an accessToken
ygg.validate(token).then(
  (response)=>{},
  (error)=>{}
);

//Invalidate all accessTokens using a current valid accessToken and clientToken.
ygg.invalidate(accessToken, clientToken).then(
  (response)=>{},
  (error)=>{}
);

//Invalidate all accessTokens
ygg.signout(username, password).then(
  (response)=>{},
  (error)=>{}
);

Server

const yggserver = require('yggdrasil').server({
  //Optional settings object
  host: 'https://authserver.mojang.com' //Optional custom host. No trailing slash.
});

//Join a server (clientside)
yggserver.join(token, profile, serverid, sharedsecret, serverkey).then(
  (response)=>{},
  (error)=>{}
);

//Join a server (serverside)
yggserver.hasJoined(username, serverid, sharedsecret, serverkey).then(
  (clientInfo)=>{},
  (error)=>{}
);

Proxy Support

const ProxyAgent = require('proxy-agent');

const ygg = require('yggdrasil')({
  //Any type of HTTP Agent 
  agent: new ProxyAgent('https://example.com:8080')
});

Further Reading