apple-music-token-node

generate developer tokens for the apple music api in node, with a CLI mode for development.

Usage no npm install needed!

<script type="module">
  import appleMusicTokenNode from 'https://cdn.skypack.dev/apple-music-token-node';
</script>

README

apple music token node

Build Status

use javascript to generate your developer tokens for use with the apple music api.

adapted from: https://github.com/pelauimagineering/apple-music-token-generator/blob/master/music_token.py

install

npm

npm install -S apple-music-token-node

yarn

yarn add apple-music-token-node

-or-

clone, download, or copy-paste this script somewhere in your node project.

updating from v1.x to v2.x

if you don't want to use the async api available in v2, the only code change you need to make is to update from this:

const getToken = require('apple-music-token-node');

to this:

const { getToken } = require('apple-music-token-node');

and you're done!

if you would like to use the new async api, you can require it like so:

const { getTokenAsync } = require('apple-music-token-node');

getTokenAsync takes the same arguments as getToken, and returns a promise (and thus is usable with async/await). the promise resolves to the same object that would be returned by using getToken.

usage

make sure you've placed the .p8 private key file you generated somewhere accessible. also, include or require your teamId and keyId from apple.

synchronous usage:

const path = require('path');
const { getToken } = require('apple-music-token-node');

const { teamId, keyId } = require('./path-to-your-config');

const certPath = path.resolve(__dirname, './path-to-your-p8-file');
const tokenData = getToken(certPath, teamId, keyId);

// tokenData == { token: 'generated_token', expiresAt: timeInSeconds }

asynchronous usage:

const path = require('path');
const { getTokenAsync } = require('apple-music-token-node');

const { teamId, keyId } = require('./path-to-your-config');

const certPath = path.resolve(__dirname, './path-to-your-p8-file');

const generate = async () => {
    const tokenData = await getTokenAsync(certPath, teamId, keyId);
    // tokenData == { token: 'generated_token', expiresAt: timeInSeconds }
    // ...
};

// -or-

const generate = () => {
    getTokenAsync(certPath, teamId, keyId).then((tokenData) => {
        // tokenData == { token: 'generated_token', expiresAt: timeInSeconds }
        // ...
    });
};

cli mode

cli mode to help generate quick tokens during development. for this, install globally:

npm

npm i -g apple-music-token-node

yarn

yarn add -g apple-music-token-node

then you can run:

amtn

and it will prompt you for the data needed to generate your developer token. (prints to the console).

Data entered correctly Basic file path suggestion for incorrect entries