AlfyChat
Langage :

Flows d'autorisation

OAuth2

Authorization Code Flow — le seul flow supporté par AlfyChat.

Étape 1 — Rediriger l'utilisateur

Construisez l'URL de la page de consentement avec les paramètres suivants :

ParamètreRequisDescription
client_idOuiL'id de votre bot
redirect_uriOuiURI de callback (doit être enregistrée)
scopeOuiScopes séparés par des espaces (ex: bot identify)
permissionsNonBitmask des permissions (si scope bot)
stateNonValeur aléatoire pour protection CSRF
const params = new URLSearchParams({
  client_id: 'VOTRE_BOT_ID',
  redirect_uri: 'https://monapp.fr/callback',
  scope: 'bot identify',
  permissions: '3',            // READ_MESSAGES | SEND_MESSAGES
  state: crypto.randomUUID(),  // protection CSRF
});

const authUrl = `https://alfychat.app/oauth2/authorize?${params}`;
window.location.href = authUrl;

Étape 2 — L'utilisateur autorise

AlfyChat affiche une page de consentement listant les permissions demandées. Si l'utilisateur accepte, il est redirigé vers votre redirect_uri avec un paramètre code valide 10 minutes.

# Callback reçu
https://monapp.fr/callback?code=abc123&state=votre-state

En cas de refus, le callback contient ?error=access_denied à la place du code.

Étape 3 — Échanger le code

Depuis votre serveur (jamais côté client), échangez le code contre un access_token :

POST https://gateway.alfychat.app/api/oauth2/token
Content-Type: application/json

{
  "client_id": "VOTRE_BOT_ID",
  "client_secret": "VOTRE_CLIENT_SECRET",
  "code": "abc123",
  "redirect_uri": "https://monapp.fr/callback"
}

Réponse

{
  "success": true,
  "data": {
    "access_token": "tok_xxxxxxxxxxxxxxxx",
    "token_type": "Bot",
    "expires_in": 2592000,
    "scope": "bot identify"
  }
}

Étape 4 — Appeler l'API

Utilisez l'access_token pour appeler l'API au nom de l'utilisateur :

GET https://gateway.alfychat.app/api/users/me
Authorization: Bot tok_xxxxxxxxxxxxxxxx
const res = await fetch('https://gateway.alfychat.app/api/users/me', {
  headers: { Authorization: `Bot ${accessToken}` },
});
const { data } = await res.json();
console.log(data.user.username);

Gestion des erreurs

access_deniedL'utilisateur a refusé l'autorisation.
invalid_clientclient_id ou client_secret incorrect.
invalid_grantCode expiré (>10 min), déjà utilisé, ou redirect_uri incorrecte.
invalid_redirect_uriLa redirect_uri n'est pas enregistrée sur votre bot.