invoice-system/set_qbo_token.js

59 lines
2.1 KiB
JavaScript

#!/usr/bin/env node
// =====================================================
// set_qbo_token.js
//
// Einmalig ausführen um qbo_token.json korrekt zu setzen.
// Die intuit-oauth Library braucht ein vollständiges Token-Objekt,
// nicht nur access_token + refresh_token.
//
// Verwendung:
// node set_qbo_token.js <ACCESS_TOKEN> <REFRESH_TOKEN> <REALM_ID>
//
// Beispiel:
// node set_qbo_token.js "eyJlbmMi..." "AB11..." "9341..."
// =====================================================
const fs = require('fs');
const path = require('path');
const accessToken = process.argv[2];
const refreshToken = process.argv[3];
const realmId = process.argv[4];
if (!accessToken || !refreshToken || !realmId) {
console.log('');
console.log('Verwendung:');
console.log(' node set_qbo_token.js <ACCESS_TOKEN> <REFRESH_TOKEN> <REALM_ID>');
console.log('');
console.log('Die Werte bekommst du aus dem Intuit OAuth Playground:');
console.log(' https://developer.intuit.com/app/developer/playground');
console.log('');
process.exit(1);
}
// Das ist das Format, das die intuit-oauth Library erwartet
const tokenObject = {
token_type: "bearer",
access_token: accessToken,
refresh_token: refreshToken,
expires_in: 3600,
x_refresh_token_expires_in: 8726400,
realmId: realmId,
// createdAt wird von der Library geprüft um zu sehen ob der Token abgelaufen ist
createdAt: new Date().toISOString()
};
const tokenFile = path.join(__dirname, 'qbo_token.json');
fs.writeFileSync(tokenFile, JSON.stringify(tokenObject, null, 2));
console.log('');
console.log('✅ qbo_token.json erfolgreich erstellt!');
console.log(` 📁 ${tokenFile}`);
console.log(` 🔑 Access Token: ${accessToken.substring(0, 20)}...`);
console.log(` 🔄 Refresh Token: ${refreshToken.substring(0, 15)}...`);
console.log(` 🏢 Realm ID: ${realmId}`);
console.log('');
console.log('Nächste Schritte:');
console.log(' 1. Docker Container neu starten: docker compose restart quote_app');
console.log(' 2. In Settings → "Test Connection" klicken');
console.log('');