• 0

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


BenHur

Question

Posté(e)

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 réponses à cette question

Messages recommandés

Posté(e)

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/

Posté(e)

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

Posté(e)

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 ?

Posté(e)

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

Posté(e)
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

             }

 

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.