Proksea/node_modules/prismarine-auth/README.md
2024-07-05 00:09:37 +08:00

103 lines
3.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# prismarine-auth
[![NPM version](https://img.shields.io/npm/v/prismarine-auth.svg)](http://npmjs.com/package/prismarine-auth)
[![Build Status](https://github.com/PrismarineJS/prismarine-auth/workflows/CI/badge.svg)](https://github.com/PrismarineJS/prismarine-auth/actions?query=workflow%3A%22CI%22)
[![Official Discord](https://img.shields.io/static/v1.svg?label=PrismarineJS&message=Discord&color=blue&logo=discord)](https://discord.gg/GsEFRM8)
[![Try it on gitpod](https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg)](https://gitpod.io/#https://github.com/PrismarineJS/prismarine-auth)
Quickly and easily obtain auth tokens to authenticate with Microsoft/Xbox/Minecraft/Mojang
## Installation
```shell
npm install prismarine-auth
```
## Usage
### Authflow
**Parameters**
- username? {String} - Username for authentication
- cacheDirectory? {String | Function} - Where we will store your tokens (optional) or a factory function that returns a cache.
- options {Object?}
- [flow] {enum} Required if options is specified - see [API.md](docs/API.md) for options
- [forceRefresh] {boolean} - Clear all cached tokens for the specified `username` to get new ones on subsequent token requests
- [password] {string} - If passed we will do password based authentication.
- [authTitle] {string} - See the [API.md](docs/API.md)
- [deviceType] {string} - See the [API.md](docs/API.md)
- onMsaCode {Function} - (For device code auth) What we should do when we get the code. Useful for passing the code to another function.
### Examples
### getMsaToken
```js
const { Authflow, Titles } = require('prismarine-auth')
const userIdentifier = 'unique identifier for caching'
const cacheDir = './' // You can leave this as undefined unless you want to specify a caching directory
const flow = new Authflow(userIdentifier, cacheDir)
// Get a auth token, then log it
flow.getMsaToken().then(console.log)
```
**Note**: By default, this library will authenticate as Minecraft for Nintendo Switch, with a `flow` set to `live`. For non-Minecraft applications you should
register for Microsoft Azure Oauth token. See https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app#register-an-application for more information on obtaining an Azure token. You then use it with the `msal` flow like this:
```js
const flow = new Authflow(userIdentifier, cacheDir, { flow: 'msal', authTitle: '000-000-000-000' })
```
If `flow` is `live`, the default, then you can only specify existing Microsoft client IDs. This library exposes some default Microsoft client IDs under the exported `Titles` object. See the [types](./index.d.ts) for more information.
### getXboxToken
See [docs/API.md](docs/API.md)
### getMinecraftJavaToken
```js
const { Authflow, Titles } = require('prismarine-auth')
const userIdentifier = 'any unique identifier'
const cacheDir = './' // You can leave this as undefined unless you want to specify a caching directory
const flow = new Authflow(userIdentifier, cacheDir)
// Get a Minecraft Java Edition auth token, then log it
flow.getMinecraftJavaToken().then(console.log)
```
### Expected Response
```json
{
"token": "ey....................",
"entitlements": {},
"profile": {
"id": "b945b6ed99b548675309473a69661b9a",
"name": "Usname",
"skins": [ [Object] ],
"capes": []
}
}
```
### getMinecraftBedrockToken
See [docs/API.md](docs/API.md) and [example](examples).
### More
[View more examples here](https://github.com/PrismarineJS/prismarine-auth/tree/master/examples).
See the [types](./index.d.ts) to checkout the full API.
## API
See [docs/API.md](docs/API.md)
## Debugging
You can enable some debugging output using the `DEBUG` enviroment variable. Through node.js, you can add `process.env.DEBUG = 'prismarine-auth'` at the top of your code.
## Testing
Simply run `npm test` or `yarn test`
## License
[MIT](LICENSE)