# Setup OAuth Microsoft (Outlook) - Smart Calendar

Ce guide te permet de configurer la connexion Outlook pour ton app locale NextAuth.

## Prerequis
- Un compte Microsoft 365 ou personnel.
- Acces au portail Azure.
- Projet lance en local sur `http://localhost:3000`.

## 1) Creer l'application dans Azure
1. Ouvre: https://portal.azure.com
2. Va dans: **Microsoft Entra ID**
3. Clique: **App registrations**
4. Clique: **New registration**
5. Nom: `Smart Calendar Local`
6. Supported account types:
   - Choix simple pour commencer: **Accounts in any organizational directory and personal Microsoft accounts**
7. Redirect URI:
   - Platform: **Web**
   - URI: `http://localhost:3000/api/auth/callback/azure-ad`
8. Clique **Register**

## 2) Recuperer les identifiants
Dans la page de l'app enregistree:
- **Application (client) ID** -> `MS_CLIENT_ID`
- **Directory (tenant) ID** -> `MS_TENANT_ID`

## 3) Creer un secret client
1. Va dans **Certificates & secrets**
2. **New client secret**
3. Donne un nom, choisis une expiration raisonnable (ex: 6 mois)
4. Copie immediatement la **Value** du secret -> `MS_CLIENT_SECRET`

Important:
- Ne pas copier le `Secret ID`.
- Azure affiche la `Value` une seule fois au moment de la creation.
- Si tu as perdu la `Value`, cree un nouveau secret.

## 4) Ajouter les permissions API
1. Va dans **API permissions**
2. **Add a permission** -> **Microsoft Graph** -> **Delegated permissions**
3. Ajoute:
   - `User.Read`
   - `Calendars.ReadWrite`
   - `offline_access`
   - `openid`
   - `profile`
   - `email`
4. Clique **Grant admin consent** si ton tenant l'exige

## 5) Remplir .env.local
Dans [.env.local](.env.local), complete:

```dotenv
MS_CLIENT_ID=<Application Client ID>
MS_CLIENT_SECRET=<Client Secret Value>
MS_TENANT_ID=<Tenant ID ou common>
```

Conseil:
- `common` marche souvent bien en local.
- Si ton tenant est verrouille, mets le vrai `Tenant ID`.

## 6) Verifier que la connexion fonctionne
1. Lance l'app: `npm run dev`
2. Ouvre `http://localhost:3000`
3. Clique **Connecter Outlook**
4. Accepte les permissions
5. Reviens dans l'app: l'etat doit afficher connecte Outlook

## 7) Erreurs frequentes
- `redirect_uri_mismatch`:
  - Verifie exactement: `http://localhost:3000/api/auth/callback/azure-ad`
- `invalid_client`:
  - Secret incorrect, expire, ou mauvais client ID
  - Cas le plus frequent: `MS_CLIENT_SECRET` contient le `Secret ID` au lieu de la `Value`
- Consentement bloque:
  - Demande admin consent dans Entra

## Checklist rapide
- App Azure creee
- Redirect URI exacte
- Permissions Graph ajoutees
- Secret copie dans `.env.local`
- Connexion Outlook validee depuis l'UI
