DeletedUser10744
Guest
§1. Présentation
Guerre Tribale fourni un système d'authentification sécurisé des joueurs sur les sites externes. Pour cela, il est nécessaire de mettre en place deux choses : l'url de renvoi vers GT et un fichier callback.php.
Afin d'introduire au fonctionnement, je vous invite à consulter un message de Morthy, développeur Innogames : http://forum.tribalwars.net/showthread.php?t=117912&page=3#42.
§2. Récupération des identifiants
Vous devez récupérer un identifiant client et un password auprès de l'équipe de support. Pour cela, rendez-vous sur le système de tickets : http://support.innogames.de/login?game=staemme&lang=fr, connectez-vous et ouvrez un ticket en indiquant que vous souhaitez récupérer ces informations. Je vous conseille au passage de bien décrire le projet que vous souhaitez développer.
§3. Création du lien vers GT
Une fois que cela est fait, passons à l'url de renvoi vers GT. Dans l'exemple ci-dessous, cela est fait avec comme nom de client tw-manager.com et je choisis de lui envoyer comme sid l'identifiant de session de l'utilisateur :
PHP:
$session_id = session_id();
$link = 'http://www.guerretribale.fr/external_auth.php?sid='.$session_id.'&client=tw-manager.com';
§4. Le fichier Callback.php
Voilà ci-dessous un exemple concret commenté :
PHP:
<?php
// Si nécessaire, on indique dans quel répertoire stocker les sessions
ini_set('session.save_path','...');
// Récupération des paramètres
$sid = $_GET['sid']; // Id de session du joueur
$username = $_GET['username']; // Pseudo du joueur
$hash = $_GET['hash']; // Hash fourni par GT qui permet de contrôler les informations
$market = $_GET['market']; // Correspond au site GT sur lequel est l'utilisateur (fr, de, en, etc.)
// Initialisation de la session avec le sid fourni en paramètre
session_id($sid);
session_start();
// Le password est fourni par Guerre Tribale sur demande
$password = '....';
// On teste si les informations fournies par l'utilisateur sont correctes
if(md5($sid.$username.$password) == $hash) {
// Stockage des informations en session
$_SESSION['connected'] = true;
$_SESSION['username'] = $username;
$_SESSION['market'] = $market;
// Connexion à la BDD
mysql_connect('...','...','...');
mysql_select_db('...');
// On regarde si l'utilisateur est déjà enregistré (il faut rechercher suivant le username ET le market,
// Car deux joueurs différents peuvent avoir le même pseudo, mais sur des markets différents)
// Par exemple : il peut y avoir le joueur Truc sur le market fr, et le joueur Truc sur le market de
$request = mysql_query('SELECT `user_id` FROM `tw_user` WHERE `user_name`="'.$username.'" AND `user_market`="'.$market.'" ');
// Si le joueur n'est pas enregistré, on l'ajoute en BDD et on stocke l'id généré en session
if(mysql_num_rows($request) != 1) {
mysql_query('INSERT INTO `tw_user`(`user_name`,`user_date_first_connexion`,`user_market`) VALUES("'.$username.'","'.time().'","'.$market.'") ');
$_SESSION['user_id'] = mysql_insert_id();
}
// Sinon, on récupère son id et on le stocke en session
else {
$user = mysql_fetch_assoc($request);
$_SESSION['user_id'] = $user['user_id'];
}
// On écrit dans la page l'url vers laquelle gt doit renvoyé l'utilisateur
echo 'http://'.$market.'.tw-manager.com/portal/index.php';
}
// On écrit dans la page l'url d'erreur connexion vers laquelle gt doit renvoyé l'utilisateur
else
echo 'http://'.$market.'.tw-manager.com/portal/index.php?p=error';
§5. Conclusion
Voilà, c'est fini, il ne vous reste plus qu'à faire un super site
Dernière édition par un modérateur: