schema + auth
This commit is contained in:
67
auth.js
Normal file
67
auth.js
Normal file
@@ -0,0 +1,67 @@
|
||||
const OAuthClient = require('intuit-oauth');
|
||||
const express = require('express');
|
||||
|
||||
const app = express();
|
||||
|
||||
// 1. Konfiguration (Füge hier deine Development Keys ein)
|
||||
|
||||
const oauthClient = new OAuthClient({
|
||||
clientId: process.env.QBO_CLIENT_ID,
|
||||
clientSecret: process.env.QBO_CLIENT_SECRET,
|
||||
environment: process.env.QBO_ENVIRONMENT, // Wichtig: 'sandbox' für Development Keys
|
||||
redirectUri: process.env.QBO_REDIRECT_URI,
|
||||
});
|
||||
// 2. Start-Route: Generiert die Login-URL und leitet dich weiter
|
||||
app.get('/', (req, res) => {
|
||||
const authUri = oauthClient.authorizeUri({
|
||||
scope: [OAuthClient.scopes.Accounting, OAuthClient.scopes.Payment],
|
||||
state: 'testState',
|
||||
});
|
||||
|
||||
console.log('Öffne Browser für Login...');
|
||||
res.redirect(authUri);
|
||||
});
|
||||
|
||||
// 3. Callback-Route: Hierhin kommt QBO zurück mit dem Code
|
||||
app.get('/callback', async (req, res) => {
|
||||
try {
|
||||
// 1. Tokens holen
|
||||
const authResponse = await oauthClient.createToken(req.url);
|
||||
const tokens = authResponse.getJson();
|
||||
const realmId = authResponse.token.realmId;
|
||||
|
||||
// 2. Test-Abruf (Kunden)
|
||||
const url = oauthClient.environment == 'sandbox'
|
||||
? OAuthClient.environment.sandbox
|
||||
: OAuthClient.environment.production;
|
||||
|
||||
const apiResponse = await oauthClient.makeApiCall({
|
||||
url: `${url}v3/company/${realmId}/query?query=select * from Customer MAXRESULTS 5`,
|
||||
method: 'GET',
|
||||
});
|
||||
|
||||
// 3. Ausgabe in der Konsole
|
||||
console.log('\n--- DEINE TOKENS (BITTE SICHERN) ---');
|
||||
console.log('Realm ID:', realmId);
|
||||
console.log('Access Token:', tokens.access_token);
|
||||
console.log('Refresh Token:', tokens.refresh_token);
|
||||
console.log('------------------------------------\n');
|
||||
|
||||
console.log("Test-Abruf Ergebnis:");
|
||||
// KORREKTUR: .getJson() statt .text()
|
||||
console.log(JSON.stringify(apiResponse.getJson(), null, 2));
|
||||
|
||||
// 4. Antwort an Browser (Erst ganz am Ende senden!)
|
||||
res.send(`<h1>Erfolg!</h1><p>Tokens sind in der Konsole.</p>`);
|
||||
|
||||
} catch (e) {
|
||||
console.error("Ein Fehler ist aufgetreten:", e);
|
||||
// Nur senden, wenn noch nichts gesendet wurde
|
||||
if (!res.headersSent) res.send('Fehler: Siehe Konsole');
|
||||
}
|
||||
});
|
||||
|
||||
// Server starten
|
||||
app.listen(3000, async () => {
|
||||
console.log('Server läuft auf http://localhost:3000');
|
||||
});
|
||||
Reference in New Issue
Block a user