Se connecter avec Kinda-e
Ce guide montre comment ajouter la connexion Kinda-e à un site, avec un exemple PHP complet. Le principe est le même dans n'importe quel langage. Il vous faut un client_id, un client_secret et une adresse de retour enregistrée (voir Obtenir un accès).
1. Le bouton
Placez un bouton qui mène vers une page de votre site (par ex. /kindae/connexion.php). Vous pouvez reprendre ce style :
<a href="/kindae/connexion.php" style="display:inline-flex;align-items:center;gap:10px;padding:10px 18px;border-radius:999px;
background:#4f46e5;color:#fff;font:600 15px system-ui,sans-serif;text-decoration:none">
<span style="display:grid;place-items:center;width:24px;height:24px;border-radius:7px;background:#fff;color:#4f46e5;font-weight:800">K</span>
Se connecter avec Kinda-e
</a>Aperçu : KSe connecter avec Kinda-e
2. Envoyer la personne vers Kinda-e
Votre page crée un state aléatoire (protection contre les attaques CSRF), le garde en session, puis redirige vers :
https://kinda-e.com/oauth/authorize.php?response_type=code&client_id=VOTRE_CLIENT_ID&redirect_uri=https%3A%2F%2Fmonsite.com%2Fkindae%2Fretour.php&state=ALEATOIRE| Paramètre | Rôle | |
|---|---|---|
response_type | obligatoire | Toujours code. |
client_id | obligatoire | L'identifiant de votre application. |
redirect_uri | obligatoire | Adresse de retour, identique caractère pour caractère à une adresse enregistrée. |
state | obligatoire | Valeur aléatoire que Kinda-e vous renvoie telle quelle. |
prompt | facultatif | select_account : toujours montrer l'écran « Choisir un compte ». none : aucun écran (voir plus bas). |
Sur kinda-e.com, la personne se connecte (ou crée son compte). Si elle était déjà connectée, Kinda-e lui montre l'écran « Choisir un compte » : continuer avec ce compte ou en utiliser un autre. Une application externe affiche en plus l'écran « Autoriser » la première fois.
Si le client_id est inconnu ou si l'adresse de retour n'est pas enregistrée, Kinda-e affiche une erreur et ne redirige pas (pour ne jamais envoyer un code vers un site inconnu).
3. Le retour sur votre site
Kinda-e renvoie vers votre redirect_uri :
- succès :
?code=...&state=...; - refus ou erreur :
?error=...&state=.... Les valeurs possibles sontaccess_denied(la personne a refusé),login_requiredetconsent_required(seulement avecprompt=none).
Vérifiez d'abord que state est celui que vous aviez gardé. Le code est valable 5 minutes et ne sert qu'une fois.
4. Échanger le code (de serveur à serveur)
Votre serveur envoie le code à Kinda-e avec votre secret. Le secret peut être envoyé en Authorization: Basic (recommandé) ou dans le corps (client_id, client_secret).
POST https://kinda-e.com/oauth/token.php
Authorization: Basic base64(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=LE_CODE&redirect_uri=https%3A%2F%2Fmonsite.com%2Fkindae%2Fretour.phpRéponse :
{
"access_token": "9f2c…64 caractères…",
"token_type": "Bearer",
"expires_in": 3600,
"user": {
"id": 1234,
"username": "marie243",
"nom_complet": "Marie Kabila",
"verifie": 0,
"photo": "https://kinda-e.com/images/avatars/KE_….webp"
}
}Vous avez maintenant l'identité de la personne : ouvrez votre propre session. Utilisez user.id comme identifiant (il ne change jamais, contrairement au nom d'utilisateur).
Exemple PHP complet
Deux fichiers. Ils n'ont besoin que de PHP 7.4+ et de l'extension cURL.
kindae/connexion.php — envoie la personne vers Kinda-e :
<?php
session_start();
const KINDAE_CLIENT_ID = 'mon_site';
const KINDAE_RETOUR = 'https://monsite.com/kindae/retour.php';
$_SESSION['kindae_state'] = bin2hex(random_bytes(16));
header('Location: https://kinda-e.com/oauth/authorize.php?' . http_build_query([
'response_type' => 'code',
'client_id' => KINDAE_CLIENT_ID,
'redirect_uri' => KINDAE_RETOUR,
'state' => $_SESSION['kindae_state'],
]));
exit;kindae/retour.php — reçoit le code, l'échange, ouvre la session :
<?php
session_start();
const KINDAE_CLIENT_ID = 'mon_site';
const KINDAE_CLIENT_SECRET = 'LE_SECRET'; // à ranger hors du code public (fichier de config non versionné)
const KINDAE_RETOUR = 'https://monsite.com/kindae/retour.php';
// 1. Vérifier le state
$state = $_GET['state'] ?? '';
if (empty($_SESSION['kindae_state']) || !hash_equals($_SESSION['kindae_state'], $state)) {
exit('Demande expirée, recommencez.');
}
unset($_SESSION['kindae_state']);
if (isset($_GET['error'])) {
exit('Connexion annulée.');
}
// 2. Échanger le code contre les infos du compte
$ch = curl_init('https://kinda-e.com/oauth/token.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => KINDAE_CLIENT_ID . ':' . KINDAE_CLIENT_SECRET,
CURLOPT_POSTFIELDS => http_build_query([
'grant_type' => 'authorization_code',
'code' => $_GET['code'] ?? '',
'redirect_uri' => KINDAE_RETOUR,
]),
CURLOPT_TIMEOUT => 10,
]);
$reponse = json_decode((string) curl_exec($ch), true);
curl_close($ch);
if (empty($reponse['user']['id'])) {
exit('La connexion avec Kinda-e a échoué.');
}
// 3. Ouvrir votre session (et créer / mettre à jour l'utilisateur dans votre base)
session_regenerate_id(true);
$_SESSION['user_id'] = (int) $reponse['user']['id'];
$_SESSION['username'] = $reponse['user']['username'];
$_SESSION['nom'] = $reponse['user']['nom_complet'];
header('Location: /');
exit;
Connexion silencieuse : prompt=none
Pour savoir si la personne est déjà connectée à Kinda-e sans rien lui afficher, ajoutez prompt=none. Kinda-e revient immédiatement avec un code si c'est le cas, ou avec error=login_required sinon. À n'utiliser que pour une reconnexion automatique, jamais à la place du bouton.
Applications mobiles
Ne mettez jamais le client_secret dans une application mobile ou dans du JavaScript : il pourrait être extrait. Ouvrez /oauth/authorize.php dans le navigateur du téléphone (ou un onglet intégré), avec une adresse de retour sur votre serveur ; c'est votre serveur qui échange le code, puis qui renvoie l'application vers elle-même (lien profond).