OAuth2 Code-Beispiele
PHP
php
<?php
// redirect.php
$clientId = 'DEINE_CLIENT_ID';
$clientSecret = 'DEIN_CLIENT_SECRET';
$redirectUri = 'https://deine-app.de/redirect.php';
$code = $_GET['code'] ?? null;
if (!$code) die('Kein Code erhalten.');
// Code gegen Token tauschen
$url = 'https://nexcord.de/api/oauth2/token?' . http_build_query([
'clientId' => $clientId,
'clientSecret' => $clientSecret,
'grantType' => 'authorization_code',
'code' => $code,
'redirectUri' => $redirectUri,
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
if (!isset($data['accessToken'])) {
die('Fehler: ' . json_encode($data));
}
$accessToken = $data['accessToken'];
$refreshToken = $data['refreshToken'];
// User-Infos abrufen
$ch = curl_init('https://nexcord.de/api/users/@me');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: $accessToken"],
]);
$user = json_decode(curl_exec($ch), true);
curl_close($ch);
session_start();
$_SESSION['nexcord_user'] = $user;
$_SESSION['nexcord_token'] = $accessToken;
header('Location: /dashboard.php');
exit;Node.js (Express)
js
// redirect.js
const express = require('express');
const axios = require('axios');
const router = express.Router();
const CLIENT_ID = 'DEINE_CLIENT_ID';
const CLIENT_SECRET = 'DEIN_CLIENT_SECRET';
const REDIRECT_URI = 'https://deine-app.de/redirect';
router.get('/redirect', async (req, res) => {
const { code } = req.query;
if (!code) return res.status(400).send('Kein Code.');
try {
// Token holen
const { data: tokenData } = await axios.post(
'https://nexcord.de/api/oauth2/token',
null,
{
params: {
clientId: CLIENT_ID,
clientSecret: CLIENT_SECRET,
grantType: 'authorization_code',
code,
redirectUri: REDIRECT_URI,
}
}
);
// User-Infos abrufen
const { data: user } = await axios.get('https://nexcord.de/api/users/@me', {
headers: { Authorization: tokenData.accessToken }
});
req.session.user = user;
req.session.token = tokenData.accessToken;
res.redirect('/dashboard');
} catch (err) {
res.status(500).json(err.response?.data ?? err.message);
}
});
module.exports = router;js
// index.js — Minimal Setup
const express = require('express');
const session = require('express-session');
const redirect = require('./redirect');
const app = express();
app.use(session({ secret: 'geheim', resave: false, saveUninitialized: true }));
app.use(redirect);
app.listen(3000);Dependencies:
bash
npm install express axios express-sessionLogin-Button generieren
js
// Login-URL zusammenbauen
const loginUrl = new URL('https://nexcord.de/authorize');
loginUrl.searchParams.set('clientId', 'DEINE_CLIENT_ID');
loginUrl.searchParams.set('scopes', 'USER_INFO USER_EMAIL');
loginUrl.searchParams.set('redirectUri', 'https://deine-app.de/redirect');
// <a href={loginUrl}>Mit Nexcord anmelden</a>