Documentation API Konnect
Konnect est un provider OAuth2 qui permet aux utilisateurs de contrôler finement les données qu'ils partagent avec votre application.
Base URL
https://konnect.example.comAuthentification
Konnect utilise le flow OAuth2 Authorization Code avec support PKCE.
- Redirigez l'utilisateur vers la page d'autorisation
- L'utilisateur accepte les permissions demandées
- Échangez le code contre des tokens
- Utilisez l'access token pour récupérer les données
2. Token Exchange
Échangez le code d'autorisation contre des tokens :
POST /api/trpc/oauth2.tokenRequest Body
{
"grant_type": "authorization_code",
"code": "kc_a1b2c3d4e5f6...",
"client_id": "your_client_id",
"client_secret": "your_client_secret",
"redirect_uri": "https://yourapp.com/callback",
"code_verifier": "original_code_verifier"
}Réponse
{
"access_token": "at_...",
"refresh_token": "rt_...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "first_name last_name email"
}3. User Info
Récupérez les données utilisateur avec l'access token :
GET /api/trpc/oauth2.userInfo?input={"accessToken":"..."}Réponse
Retourne uniquement les champs que l'utilisateur a accepté de partager :
{
"sub": "123",
"first_name": "John",
"last_name": "Doe",
"email": "john@example.com"
} Le champ sub (ID utilisateur) est toujours inclus. Les autres champs dependent des consentements accordes.
4. Refresh Token
Obtenez un nouveau access token :
{
"grant_type": "refresh_token",
"refresh_token": "rt_...",
"client_id": "your_client_id",
"client_secret": "your_client_secret"
}Scopes disponibles
Données standard
| Scope | Label | Description |
|---|---|---|
adress | Adresse postale | Votre adresse postale |
child_number | Nombre d'enfants | Combien avez-vous d'enfants ? |
city | Ville | Ville de résidence |
country | Pays | Pays de résidence |
detudes | Domaine d'études | Votre domaine d'études |
dob | Date de naissance | Votre date de naissance |
email | Votre email | |
enterprise | Nom de l'entreprise | Le nom de l'entreprise pour laquelle vous travaillez |
first_name | Prénom | Votre prénom |
flanguage | Langue préférée | Votre langage préféré |
genre | Genre | Votre genre |
hobbies | Hobbies | Vos hobbies |
language | Langues parlées | Vos langues parlées |
matrimonial | Statut matrimonial | Votre statut matrimonial |
name | Nom | Votre nom de famille |
netudes | Niveau d'études | Votre niveau d'études |
phone | Téléphone | Votre numéro de téléphone |
poste | Poste/Fonction | Votre poste/fonction dans l'entreprise |
prostatus | Statut professionnel | Votre statut professionnel |
region | Région | Région de résidence |
salaries | Taille d'entreprise | Le nombre d'employés de l'entreprise pour laquelle vous travaillez |
username | Pseudonyme | Votre pseudonyme |
Données providers
Accès aux données vérifiées depuis les providers OAuth connectés :
| Scope | Label | Provider |
|---|---|---|
discord_id | Id | Discord |
discord_username | Username | Discord |
discord_avatar | Avatar | Discord |
discord_discriminator | Discriminator | Discord |
discord_public_flags | Public flags | Discord |
discord_flags | Flags | Discord |
discord_banner | Banner | Discord |
discord_accent_color | Accent color | Discord |
discord_global_name | Global name | Discord |
discord_banner_color | Banner color | Discord |
discord_mfa_enabled | Mfa enabled | Discord |
discord_locale | Locale | Discord |
discord_premium_type | Premium type | Discord |
discord_email | Discord | |
discord_verified | Verified | Discord |
Webhooks
Les webhooks permettent à votre application de recevoir des notifications en temps réel lorsqu'un utilisateur se connecte.
Configuration
Configurez l'URL de votre webhook dans les paramètres de votre application sur le dashboard.
Événement : user.connected
Déclenché lorsqu'un nouvel utilisateur autorise votre application pour la première fois.
POST https://votreapp.com/webhooks/konnectPayload
{
"event": "user.connected",
"timestamp": "2024-01-15T10:30:00.000Z",
"app": {
"id": 1,
"name": "Mon Application",
"clientId": "kc_abc123..."
},
"user": {
"id": 42,
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe"
},
"scope": "first_name last_name email"
}Bonnes pratiques
- Répondez rapidement (< 5 secondes) avec un code 200 pour confirmer la réception
- Vérifiez l'origine des requêtes en validant les données reçues
- Traitez les webhooks de manière asynchrone si nécessaire
- Implémentez une logique de retry en cas d'échec temporaire
Important
Si votre webhook échoue, le processus d'autorisation n'est pas interrompu. L'utilisateur pourra quand même utiliser votre application.
Erreurs
Format de réponse en cas d'erreur :
{
"error": {
"message": "Invalid access token",
"code": -32600,
"data": {
"code": "UNAUTHORIZED",
"httpStatus": 401
}
}
}Codes d'erreur
| HTTP | Code | Description |
|---|---|---|
| 400 | BAD_REQUEST | Paramètres invalides |
| 401 | UNAUTHORIZED | Token invalide ou expiré |
| 403 | FORBIDDEN | Accès refusé |
| 404 | NOT_FOUND | Ressource introuvable |
PKCE
Pour les clients publics (apps mobiles, SPA), PKCE est fortement recommandé.
Implémentation JavaScript
// Generate code verifier (random string)
function generateCodeVerifier() {
const array = new Uint8Array(32)
crypto.getRandomValues(array)
return base64UrlEncode(array)
}
// Generate code challenge (SHA256 hash)
async function generateCodeChallenge(verifier) {
const encoder = new TextEncoder()
const data = encoder.encode(verifier)
const hash = await crypto.subtle.digest('SHA-256', data)
return base64UrlEncode(new Uint8Array(hash))
}
// Base64 URL encoding
function base64UrlEncode(buffer) {
return btoa(String.fromCharCode(...buffer))
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=+$/, '')
}