Connexion avec DeHub — OAuth et jetons de mini-app
Il y a deux façons de savoir qui est un utilisateur DeHub. Dans une mini-app, demandez un jeton signé au SDK. Sur tout autre site ou app, utilisez OAuth standard. Dans les deux cas, l’id de l’utilisateur est l’adresse de son portefeuille DeHub, le même id que partout sur DeHub.
Dans une mini-app
// In your mini app
const { token } = await dehub.auth.getToken();
await fetch('/api/session', { method: 'POST', headers: { Authorization: `Bearer ${token}` } });
// On your server (Node, any JOSE library works)
import { createRemoteJWKSet, jwtVerify } from 'jose';
const JWKS = createRemoteJWKSet(
new URL('https://aigxuutjaqsywioxjefr.supabase.co/functions/v1/miniapp-auth'),
);
const { payload } = await jwtVerify(token, JWKS, {
issuer: 'https://riftn.com',
audience: 'tipjar.example.com', // your domain
});
const wallet = payload.sub; // the user's DeHub wallet, lowercase
Le jeton est un JWT ES256 valable une heure. DeHub l’adresse au domaine qu’il a réellement chargé, donc un jeton créé pour une app ne peut jamais servir pour une autre. Le SDK le met en cache et en récupère un nouveau peu avant son expiration.
Sur n’importe quel site ou app (OAuth)
DeHub parle l’API OAuth de Mastodon : toute bibliothèque OAuth 2.0 fonctionne, tout comme chaque bibliothèque cliente Mastodon. PKCE est pris en charge et recommandé.
1. Enregistrez votre app une fois.
curl -X POST https://riftn.com/api/v1/apps \
-H 'Content-Type: application/json' \
-d '{"client_name":"Tip Jar","redirect_uris":"https://tipjar.example.com/callback","scopes":"profile","website":"https://tipjar.example.com"}'
Conservez le client_id et le client_secret renvoyés. Ils ne s’affichent qu’une fois.
2. Envoyez l’utilisateur sur DeHub pour qu’il approuve.
https://riftn.com/oauth/authorize
?response_type=code
&client_id=YOUR_CLIENT_ID
&redirect_uri=https://tipjar.example.com/callback
&scope=profile
&state=RANDOM_STATE
&code_challenge=PKCE_CHALLENGE
&code_challenge_method=S256
3. Échangez le code contre un jeton sur votre serveur.
curl -X POST https://riftn.com/oauth/token \
-d grant_type=authorization_code \
-d code=CODE_FROM_REDIRECT \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=YOUR_CLIENT_SECRET \
-d redirect_uri=https://tipjar.example.com/callback \
-d code_verifier=PKCE_VERIFIER
4. Lisez qui s’est connecté.
curl https://riftn.com/api/v1/accounts/verify_credentials \
-H 'Authorization: Bearer ACCESS_TOKEN'
Dans la réponse, id est l’adresse du portefeuille de l’utilisateur. acct est son identifiant, avec display_name, avatar et le url.
Portées
| Portée | Autorise |
|---|---|
profile | Uniquement savoir qui s’est connecté. À utiliser pour la connexion. |
read | Lire le fil, les abonnements et les notifications de l’utilisateur. Affinez avec des sous-portées comme read:accounts. |
write | Publier, répondre, aimer et téléverser au nom de l’utilisateur, par exemple write:statuses ou write:media. |
follow | Suivre, masquer et bloquer. |
push | Abonnements aux notifications push web. |
Ne demandez que ce dont vous avez besoin. Les gens voient la liste sur l’écran d’approbation et peuvent révoquer n’importe quelle app dans leurs réglages DeHub.
Agents IA
Les assistants IA se connectent via le serveur MCP de DeHub à https://riftn.com/mcp, qui gère son propre flux OAuth avec enregistrement dynamique des clients. Voir Connecter.
Ouvrir DeHub