Passer au contenu principal
FIM One prend en charge la connexion sociale via GitHub, Google, Discord et Feishu (Lark). Tout fournisseur dont les identifiants sont présents dans l’environnement affiche automatiquement un bouton de connexion sur la page de connexion — aucune modification de code requise. Modèle d’URL de rappel — enregistrez cette URL exacte dans la console développeur de chaque fournisseur :
{API_BASE_URL}/api/auth/oauth/{provider}/callback
API_BASE_URL est l’adresse accessible de l’extérieur du backend FIM One. Exemples :
ScénarioExemple d’URL de rappel
Dev localhttp://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
  1. Cliquez sur OAuth AppsNew OAuth App.
  2. 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 URLhttps://yourdomain.com/api/auth/oauth/github/callback
  3. Cliquez sur Register application, puis cliquez sur Generate a new client secret.
  4. Copiez l’Client ID et le Client Secret généré dans votre .env.
Portées demandées automatiquement : 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.
GITHUB_CLIENT_ID=Ov23li...
GITHUB_CLIENT_SECRET=...

Google

Console de développement : https://console.cloud.google.com/apis/credentials
  1. Cliquez sur + CREATE CREDENTIALSOAuth client ID.
  2. Si vous y êtes invité, configurez d’abord l’OAuth consent screen (définissez User Type sur “External” pour les applications personnelles/publiques).
  3. Définissez Application type sur Web application.
  4. Sous Authorized redirect URIs, ajoutez :
    https://yourdomain.com/api/auth/oauth/google/callback
    
  5. Cliquez sur Create, puis copiez l’Client ID et le Client Secret.
Portées demandées automatiquement : 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.
GOOGLE_CLIENT_ID=12345678-abc.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-...

Discord

Console de développement : https://discord.com/developers/applications
  1. Cliquez sur New Application et donnez-lui un nom.
  2. Dans la barre latérale gauche, cliquez sur OAuth2.
  3. Sous Redirects, cliquez sur Add Redirect et entrez :
    https://api.yourdomain.com/api/auth/oauth/discord/callback
    
  4. Copiez l’ID Client (affiché en haut de la page OAuth2) et cliquez sur Reset Secret pour révéler le Secret Client.
Portées demandées automatiquement : 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 champ email peut être null. FIM One crée le compte avec un email null dans ce cas — l’utilisateur peut en ajouter un plus tard dans Paramètres.
DISCORD_CLIENT_ID=123456789012345678
DISCORD_CLIENT_SECRET=...

Feishu (Lark)

Limité à la portée du locataire. Les applications internes Feishu (自建应用) ne peuvent authentifier que les utilisateurs du même locataire d’entreprise qui a créé l’application. Les utilisateurs d’autres locataires Feishu verront une erreur « pas de permission ». Cela signifie que Feishu OAuth n’est pas adapté aux déploiements SaaS publics où les utilisateurs proviennent d’organisations différentes. Il fonctionne bien pour les déploiements privés / monoorganisation où tous les utilisateurs appartiennent au même locataire Feishu.Pour prendre en charge la connexion Feishu multi-locataires, vous devez publier l’application dans le Répertoire des applications Feishu (应用商店) et passer le processus d’examen de Feishu — ce qui est complexe et a des exigences strictes.
Console de développeur : https://open.feishu.cn/app
  1. Cliquez sur Create AppIn-house app (自建应用). Les comptes d’entreprise/organisation sont requis — Feishu OAuth n’est pas disponible pour les comptes personnels.
  2. Sous Permissions & Scopes, recherchez et activez :
    • contact:user.email:readonly
  3. Sous Security SettingsRedirect URL, ajoutez votre URL de rappel :
    https://yourdomain.com/api/auth/oauth/feishu/callback
    
  4. Copiez l’App ID et l’App Secret de la section Credentials & Basic Info.
Portées configurées dans la console (pas dans l’URL d’autorisation) : contact:user.email:readonly
Note : Feishu utilise App ID / App Secret au lieu de la dénomination standard Client ID / Client Secret. Les noms des variables d’environnement reflètent cela : FEISHU_APP_ID et FEISHU_APP_SECRET.
FEISHU_APP_ID=cli_a1b2c3d4e5f6...
FEISHU_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.
FIM One gère cela correctement : voir Règles de liaison de compte ci-dessous.

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 erreur email_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) :
  1. FIM One recherche un compte existant dont l’email correspond à l’email du contact d’entreprise Feishu.
  2. Si une correspondance est trouvée, le compte Feishu est automatiquement lié au compte FIM existant et l’utilisateur est connecté.
  3. Si aucune correspondance (y compris lorsque l’email est vide), un nouveau compte FIM est créé identifié par le open_id Feishu. 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

VariableFournisseurRequisDescription
GITHUB_CLIENT_IDGitHubLes deuxID client de l’application OAuth GitHub
GITHUB_CLIENT_SECRETGitHubLes deuxSecret client de l’application OAuth GitHub
GOOGLE_CLIENT_IDGoogleLes deuxID client OAuth 2.0 Google
GOOGLE_CLIENT_SECRETGoogleLes deuxSecret client OAuth 2.0 Google
DISCORD_CLIENT_IDDiscordLes deuxID client de l’application OAuth2 Discord
DISCORD_CLIENT_SECRETDiscordLes deuxSecret client de l’application OAuth2 Discord
FEISHU_APP_IDFeishuLes deuxID de l’application interne Feishu (note : pas CLIENT_ID)
FEISHU_APP_SECRETFeishuLes deuxSecret de l’application interne Feishu
FRONTEND_URLTousProdURL vers laquelle le navigateur est redirigé après la fin de OAuth (par ex. https://yourdomain.com)
API_BASE_URLTousProdURL du backend accessible en externe, utilisée pour construire les URL de rappel
NEXT_PUBLIC_API_URLTousProdURL de l’API côté navigateur pour les redirections OAuth — intégrée au moment de la compilation
« Requis : Les deux » signifie que _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 de FRONTEND_URL, API_BASE_URL et NEXT_PUBLIC_API_URL.