API_BASE_URL est l’adresse accessible de l’extérieur du backend FIM One. Exemples :
| Scénario | Exemple d’URL de rappel |
|---|---|
| Dev local | http://localhost:8000/api/auth/oauth/github/callback |
| Sous-domaine API dédié | https://api.yourdomain.com/api/auth/oauth/github/callback |
| Proxy inverse (même domaine) | https://yourdomain.com/api/auth/oauth/github/callback |
GitHub
Console développeur : https://github.com/settings/developers- Cliquez sur OAuth Apps → New OAuth App.
- Remplissez :
- Application name — n’importe quel nom (par ex.
FIM One) - Homepage URL — l’URL de votre frontend (par ex.
https://yourdomain.com) - Authorization callback URL —
https://yourdomain.com/api/auth/oauth/github/callback
- Application name — n’importe quel nom (par ex.
- Cliquez sur Register application, puis cliquez sur Generate a new client secret.
- Copiez l’Client ID et le Client Secret généré dans votre
.env.
read:user, user:email
Les comptes GitHub avec une adresse e-mail principale privée sont gérés correctement — FIM One récupère toujours l’e-mail principal vérifié depuis /user/emails, et non l’e-mail du profil public.
- Cliquez sur + CREATE CREDENTIALS → OAuth client ID.
- Si vous y êtes invité, configurez d’abord l’OAuth consent screen (définissez User Type sur “External” pour les applications personnelles/publiques).
- Définissez Application type sur Web application.
- Sous Authorized redirect URIs, ajoutez :
- Cliquez sur Create, puis copiez l’Client ID et le Client Secret.
openid, email, profile
Note : Pendant le développement, l’écran de consentement affichera un avertissement “This app is not verified”. Vous pouvez le dépasser pour les tests. Publiez l’écran de consentement si vous souhaitez supprimer l’avertissement pour les utilisateurs finaux.
Discord
Console de développement : https://discord.com/developers/applications- Cliquez sur New Application et donnez-lui un nom.
- Dans la barre latérale gauche, cliquez sur OAuth2.
- Sous Redirects, cliquez sur Add Redirect et entrez :
- Copiez l’ID Client (affiché en haut de la page OAuth2) et cliquez sur Reset Secret pour révéler le Secret Client.
identify, email
Discord ne garantit pas un email vérifié pour tous les comptes. Si un utilisateur n’a pas vérifié son email auprès de Discord, le champnull. FIM One crée le compte avec un email null dans ce cas — l’utilisateur peut en ajouter un plus tard dans Paramètres.
Feishu (Lark)
Console de développeur : https://open.feishu.cn/app- Cliquez sur Create App → In-house app (自建应用). Les comptes d’entreprise/organisation sont requis — Feishu OAuth n’est pas disponible pour les comptes personnels.
- Sous Permissions & Scopes, recherchez et activez :
contact:user.email:readonly
- Sous Security Settings → Redirect URL, ajoutez votre URL de rappel :
- Copiez l’App ID et l’App Secret de la section Credentials & Basic Info.
contact:user.email:readonly
Note : Feishu utiliseApp ID/App Secretau lieu de la dénomination standardClient ID/Client Secret. Les noms des variables d’environnement reflètent cela :FEISHU_APP_IDetFEISHU_APP_SECRET.
Important: Comportement des emails Feishu
L’API d’informations utilisateur Feishu (authen/v1/user_info) retourne l’email de contact d’entreprise (联系邮箱) de l’utilisateur — l’adresse configurée par l’administrateur de l’organisation dans la console d’administration Feishu. Ce n’est pas l’email de connexion personnel Feishu de l’utilisateur.
Conséquences :
- Les utilisateurs dont l’administrateur de l’organisation n’a pas configuré d’email de contact recevront un champ email vide de la part de l’API, même s’ils disposent d’un compte Feishu valide.
- Les utilisateurs disposant de comptes Feishu personnels (ne faisant pas partie d’une entreprise) recevront toujours un email vide.
Règles de liaison de compte
Les utilisateurs enregistrés peuvent lier des fournisseurs OAuth supplémentaires à partir de Paramètres → Compte. Les règles suivantes s’appliquent lorsqu’un utilisateur initie une liaison :Règle générale (GitHub, Google, Discord)
L’e-mail retourné par le fournisseur OAuth doit correspondre à l’e-mail enregistré du compte FIM One. Cela empêche de lier accidentellement le compte social d’une autre personne à votre compte FIM One. Si les e-mails ne correspondent pas, la liaison est rejetée avec une erreuremail_mismatch.
Exception Feishu
Parce que l’API de Feishu retourne l’email de contact d’entreprise plutôt que l’email de connexion, et ce champ est souvent vide pour les comptes personnels ou les comptes dans des organisations où l’administrateur ne l’a pas configuré, la vérification de correspondance d’email pour Feishu suit une règle plus souple :- Les deux côtés ont un email → les emails doivent correspondre (même vérification que pour les autres fournisseurs).
- L’un des côtés n’a pas d’email (Feishu a retourné un champ vide, ou le compte FIM One n’a pas d’email) → la liaison réussit en fonction de l’authentification basée sur le ticket seul.
Connexion Feishu (pas encore liée)
Lorsqu’un utilisateur se connecte via Feishu pour la première fois (aucune liaison existante) :- FIM One recherche un compte existant dont l’email correspond à l’email du contact d’entreprise Feishu.
- Si une correspondance est trouvée, le compte Feishu est automatiquement lié au compte FIM existant et l’utilisateur est connecté.
- Si aucune correspondance (y compris lorsque l’email est vide), un nouveau compte FIM est créé identifié par le
open_idFeishu. Le compte aura un email null, que l’utilisateur pourra remplir à partir des Paramètres plus tard.
Référence rapide des variables d’environnement
| Variable | Fournisseur | Requis | Description |
|---|---|---|---|
GITHUB_CLIENT_ID | GitHub | Les deux | ID client de l’application OAuth GitHub |
GITHUB_CLIENT_SECRET | GitHub | Les deux | Secret client de l’application OAuth GitHub |
GOOGLE_CLIENT_ID | Les deux | ID client OAuth 2.0 Google | |
GOOGLE_CLIENT_SECRET | Les deux | Secret client OAuth 2.0 Google | |
DISCORD_CLIENT_ID | Discord | Les deux | ID client de l’application OAuth2 Discord |
DISCORD_CLIENT_SECRET | Discord | Les deux | Secret client de l’application OAuth2 Discord |
FEISHU_APP_ID | Feishu | Les deux | ID de l’application interne Feishu (note : pas CLIENT_ID) |
FEISHU_APP_SECRET | Feishu | Les deux | Secret de l’application interne Feishu |
FRONTEND_URL | Tous | Prod | URL vers laquelle le navigateur est redirigé après la fin de OAuth (par ex. https://yourdomain.com) |
API_BASE_URL | Tous | Prod | URL du backend accessible en externe, utilisée pour construire les URL de rappel |
NEXT_PUBLIC_API_URL | Tous | Prod | URL de l’API côté navigateur pour les redirections OAuth — intégrée au moment de la compilation |
_ID et _SECRET (ou _APP_ID et _APP_SECRET pour Feishu) doivent être définis ensemble ; définir un seul n’a aucun effet.
Voir Variables d’environnement pour la documentation complète deFRONTEND_URL,API_BASE_URLetNEXT_PUBLIC_API_URL.