Cette documentation vise à guider les développeurs souhaitant intégrer le système de connexion OAuth 2 de Pixxle sur leur application web sur la base d’un Framework PHP avec un exemple spécifique pour Laravel. Il est nécessaire de disposer d’un compte sur la plateforme Pixxle Developer pour configurer et obtenir les paramètres requis tels que client_id, client_secret, et redirect_uri nécéssaire pour la mise en place du Pixxle Login.
Prérequis
- Un compte Pixxle (Inscription gratuite sur https://www.pixxle.me/register)
- L’activation de votre console sur Pixxle Developer
- La création d’une application Pixxle Login sur la console.
- Laravel 8.x ou supérieur installé sur votre serveur.
Étape 1: Configuration de Laravel
Assurez-vous que votre application Laravel est configurée pour utiliser les sessions et les routes. Si nécessaire, configurez votre environnement pour faire des requêtes HTTP externes.
Étape 2: Définir les routes
Définissez les routes nécessaires pour gérer le processus d’authentification :
Route::get('/auth/login', 'AuthController@login_v2')->name('login');
Route::get('/auth/callback', 'AuthController@callback_v2')->name('callback');
Étape 3: Créer le contrôleur AuthController
Méthode login_v2
Définissez les routes nécessaires pour gérer le processus d’authentification :
public function login_v2(Request $request)
{
$state = Str::random(40); // Générer un état aléatoire pour la sécurité CSRF
$request->session()->put("state", $state);
$query = http_build_query([
"client_id" => "votre_client_id",
"redirect_uri" => "https://votre_domaine.com/auth/callback",
"response_type" => "code",
"scope" => "user.full", // Adapté selon les besoins
"state" => $state,
]);
return redirect("https://www.pixxle.me/oauth/v2/authorize?" . $query);
}
Méthode callback_v2
Cette méthode gère le retour de l’utilisateur après l’authentification, incluant la récupération du token et des informations utilisateur :
public function callback_v2(Request $request)
{
$state = $request->session()->pull("state");
if (!$request->has('state') || $request->state !== $state) {
return redirect()->route('login')->withErrors(['state_mismatch' => 'Invalid state parameter']);
}
if ($request->has('code')) {
$response = Http::post('https://www.pixxle.me/v2/oauth/token', [
'client_id' => 'votre_client_id',
'client_secret' => 'votre_client_secret',
'code' => $request->code,
'redirect_uri' => 'https://votre_domaine.com/auth/callback',
'grant_type' => 'authorization_code',
]);
if ($response->successful()) {
$accessToken = $response->json()['access_token'];
// Utiliser le token pour récupérer les informations de l'utilisateur
// Ajouter la logique pour gérer l'utilisateur dans votre système
} else {
return redirect()->route('login')->withErrors(['error' => 'Erreur lors de l\'échange du code.']);
}
}
return redirect()->route('login')->withErrors(['error' => 'Code manquant.']);
}
Étape 4: Tester l’intégration
Testez l’intégration en vous assurant que les redirections fonctionnent correctement et que les informations utilisateur sont correctement récupérées et traitées.
Assurez-vous de sécuriser les clés client_secret et de suivre les meilleures pratiques pour gérer les données utilisateur.