Add Sign in with Apple sorta
This commit is contained in:
48
scripts/generate_apple_secret.js
Normal file
48
scripts/generate_apple_secret.js
Normal file
@@ -0,0 +1,48 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const jwt = require('jsonwebtoken');
|
||||
const dotenv = require('dotenv');
|
||||
|
||||
// Load environment variables from .env file
|
||||
dotenv.config();
|
||||
|
||||
const generateAppleSecret = (config) => {
|
||||
const { teamId, clientId, keyId, privateKeyPath } = config;
|
||||
const privateKey = fs.readFileSync(privateKeyPath).toString();
|
||||
const now = Math.floor(Date.now() / 1000);
|
||||
const payload = {
|
||||
iss: teamId,
|
||||
iat: now,
|
||||
exp: now + 86400 * 180, // 180 days
|
||||
aud: 'https://appleid.apple.com',
|
||||
sub: clientId,
|
||||
};
|
||||
const headers = {
|
||||
alg: 'ES256',
|
||||
kid: keyId,
|
||||
};
|
||||
return jwt.sign(payload, privateKey, { algorithm: 'ES256', header: headers });
|
||||
};
|
||||
|
||||
const config = {
|
||||
teamId: process.env.APPLE_TEAM_ID || '',
|
||||
clientId: process.env.AUTH_APPLE_ID || '',
|
||||
keyId: process.env.APPLE_KEY_ID || '',
|
||||
privateKeyPath: path.resolve(
|
||||
__dirname,
|
||||
process.env.APPLE_PRIVATE_KEY_PATH || '',
|
||||
),
|
||||
};
|
||||
|
||||
if (
|
||||
!config.teamId ||
|
||||
!config.clientId ||
|
||||
!config.keyId ||
|
||||
!config.privateKeyPath
|
||||
) {
|
||||
console.error('Missing necessary Apple configuration');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const appleSecret = generateAppleSecret(config);
|
||||
console.log(`Your Apple Secret:\n\n${appleSecret}\n`);
|
||||
Reference in New Issue
Block a user