• 0

Comment intégrer un login via compte Steam sur son site ou son forum ?


BenHur

Question

Posted

Bonjour à tous,

 

Un petit post pour partager sur une nouveauté introduite sur le site Vossey.com et le forum : le login via Steam.  En effet, ceci est possible grâce à la technologie OpenID. (http://fr.wikipedia.org/wiki/OpenID). Utiliser cette fonctionnalité ne vous coutera rien et pourra aider vos visiteurs à s'inscrire et à plus utiliser vos services.

 

Attention : Inconvénient avec le login ID via Steam : on ne récupère pas l'adresse Email mais une version 64 bits de l'id de l'user.

 

Bon à savoir : pour wordpress et CMS que vous pouvez utiliser, il peut exister des modules qui s'installent en quelques clics.

 

N'hésitez pas à partager vos expériences et à demander de l'aide !

 

 

7 answers to this question

Recommended Posts

Posted

Pour le site Vossey.com : nous avons utilisé la bibliothèque LightOpenID : quelques lignes permettent ensuite la connexion :

    $openid = new LightOpenID('www.votresite.com');
            if(!$openid->mode) {
                if(isset($_GET['login'])) {
                    $openid->identity = 'https://steamcommunity.com/openid';
                    $openid->returnUrl = "http://www.urldevotrepagede retour";
                    header('Location: ' . $openid->authUrl());

                    exit();
                }
            } elseif($openid->mode == 'cancel') {
                echo 'User has canceled authentication!';
            } else {

             if($openid->validate())
             {

               // Votre traitement

             }

 

 

Pour le forum (produit Invision) : le module suivant que nous avons adapté à notre base de données :

http://community.invisionpower.com/files/file/5393-sign-in-through-steam/

Posted

Et qu'est-ce que ça donne avec un membre qui se connecte avec son id steam, mais qui a relié son compte steam avec son compte vossey ?

Concrètement, c'est une table qui fait le lien entre les id du site et l'id Steam.

Une fois loggé via Steam, une vérification est faite pour savoir si le compte est bien connu chez nous (ou pas).

 

Cette vérification est réalisée dans le validate().

J'espère avoir répondu à ta question sinon n'hésites pas

Posted

C'est pas mal ça.

Donc si je comprend bien, si un visiteur se connecte avec son steam id ici, une vérification est fait pour savoir si un compte vossey y est lié ou non.

Et dans le cas d'un membre qui se connecte avec son compte vossey, une vérification similaire est faite ?

Posted

C'est hyper simple, mais faut savoir quoi vouloir.

 

ex:

 

Ta ton site avec un bouton, dans le Steam SDK pour le OpenID Login tu as un code qui te permet de générer l'URL avec le lien de retour sur ton site (tu peu définir une page précise si ton code est limité)

 

Alors l'user click sur ce lien,s a va l'ammener a l'authentification avec Steam, si il est déjà identifier il devra confirmé qui s'identifie à ton site.

 

L'user revient dont sur ton site, un code unique te sera fournis, tu le valide avec Steam avec une commande du SDK.

 

Alors à ce moment tu n'a que très peu de détails; SteamID (64), son personaname et realname (et des infos géographique défini, ville, pays....)

 

Alors si tu as besoin comme identification, je te suggère ceci, une belle table avec les infos que tu veux. Alors la tu met le SteamID dedans (la seul chose qui ne bouge jamais dans les données), et tu fait un filtre qui détermine si il existe dans la base, sinon tu l'ajoute.

 

Pour avoir l'état du VAC, privacy, échanges, inventaires, groupes etc.... faut passer par le ... API de Steam et les sortie XML/JSon. La ont tombe dans plus complexe.

 

C'est plus simple d'intégrer l'identification STEAM que celle de Facebook, Te suffit de PHP 4 (PHP5 c'est mieux).

Je te suggère également d'obtenir une clé API de STEAM, cette clé te permet de pousser la réception des infos depuis l'API relativement complet de STEAM.

 

Code du SDK Login (genurl et validate) http://forums.steampowered.com/forums/showthread.php?t=1430511

 

Ce code te donne que le OK, il récupère aucune info, pour sa il te faut d'autres lignes, en utilisant le SteamID du requérant.

 

Lors du retour de l'utilisateur sur ton site (après l'identification) confirme le, et capture depuis les infos reçu en _GET le steamid (tu as d'autres infos qui te permette de détecter si il est en mode de retour). De la fait un appel sur le profile de l'utilisateur avec ?xml=1, pour une sortie en XML au lieu de HTML. avec le loader XML de PHP, transforme le en Array (ou object) pour l'utiliser le tout plus facilement.

 

Si tu as besoin d'aide, ajoute moi sur STEAM :) Je travail sur la version 7 de cadeau STEAM et j'améliore justement cette facette de mon code.

 

ET je rassure, STEAM ne donne pas les infos suivantes; email, password, identifiant

Posted
Le 23/02/2014 à 12:04, BenHur a dit :

    $openid = new LightOpenID('www.votresite.com');
            if(!$openid->mode) {
                if(isset($_GET['login'])) {
                    $openid->identity = 'https://steamcommunity.com/openid';
                    $openid->returnUrl = "http://www.urldevotrepagede retour";
                    header('Location: ' . $openid->authUrl());

                    exit();
                }
            } elseif($openid->mode == 'cancel') {
                echo 'User has canceled authentication!';
            } else {

             if($openid->validate())
             {

               // Votre traitement

             }

 

Archived

This topic is now archived and is closed to further replies.