IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Viadeo API (PHP-SDK)


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Viadeo API (PHP-SDK)
    Bonjour à tous,

    J'ai un problème assez spécifique à résoudre. Je me suis permis de le poster dans la rubrique "scripts" du forum PHP car il traite du PHP-SDK de Viadéo.

    En effet je travaille actuellement sur un module d'authentification via les réseaux sociaux (OAuth2) (Facebook, Twitter, Google+, LinkedIn, et Viadéo). Ce module est intégré à une plateforme web. Pour ceux qui ont déjà eu l'occasion de mettre ceci en oeuvre, vous devez donc savoir que dans chaque cas un SDK à télécharger est disponible pour chaque service dans des langages divers (si pas de SDK, des exemples de scripts d'utilisation sont fournis). Ma plateforme web étant développée en PHP, j'ai donc opté pour les SDK's PHP (logique). En ce qui concerne Facebook, Twitter, Google+ et LinkedIn, mon module fonctionne normalement. Le process suivi est le suivant : Chargement de la page->redirection vers la page d'authentification du réseau social->connection accordée->redirection vers la page de mon site->récupération des infos->cloturation de la connection vers le réseau social->démarrage de la session (identifiée) sur ma plateforme.

    Voici donc le problème rencontré: Lorque l'on se retrouve sur la page d'authentification de Viadéo, ceux-ci créent un cookie qui permettra à l'utilisateur de ne plus devoir s'authentifier par la suite. Ce n'est pas grave en soi, mais je trouve ça très gênant dans le cas où un utilisateur se connecte sur ma plateforme via Viadéo à partir d'un cybercafé par exemple ou de toute autre machine accessible de manière publique... En effet, une fois l'authentification effectuée, même si l'utilisateur se déconnecte de ma plateforme, le cookie de connection Viadéo est présent sur la machine et de ce fait connecte de manière automatique à ma plateforme le dernier utilisateur loggué. Au niveau de la sécurité c'est donc un problème majeur !

    Je lance donc un appel de détresse à tous ceux qui ont déjà été confronté à ce problème avec ce SDK !

    J'ai relu la doc (en anglais) et il me semble avoir correctement utilisé les classes mises à disposition.

    Voici ce que préconise viadéo concernant l'utilisation de son SDK:

    http://dev.viadeo.com/documentation/...mples/php-sdk/
    http://dev.viadeo.com/documentation/...sdk-reference/

    Voici l'extrait de code que j'ai intégré à mon module:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     
    <?php
    	include 'lib/viadeoapi.inc.php';
     
    	// Fonction de formation de l'url permettant la révocation du jeton d'accès.
    	function revoke_access_token($access_token){
    		$url = 'https://secure.viadeo.com/oauth-provider/revoke_access_token2?';
    		$url.= 'client_id=<CLIENT_ID>&';
    		$url.= 'client_secret=<CLIENT_SECRET>&';
    		$url.= 'redirect_uri=<REDIRECT_URI>&';
    		$url.= 'access_token='.$access_token;
     
    		return $url;
    	}
     
    	$viadeo = new ViadeoAPI();
    	$viadeo->init(array(  
    		'store'            =>    false,  
    		'client_id'        =>    <CLIENT_ID>,  
    		'client_secret'  =>    <CLIENT_SECRET>
    	));
     
    	// Manage with disconnect -----------------------------------------------------  
    	if (isset($_REQUEST['disconnect']) && ($_REQUEST['disconnect'] == 'true')) {
    			$access_token = $viadeo->getAccessToken();  
    			$viadeo->disconnect();  
    			echo "You've been disconnected, ";  
    			echo "<a href='".revoke_access_token($access_token)."'>reconnect</a>";   // ViadeoHelper::getCurrentURL()
    			exit(0);  
    	}
     
    	if(isset($_GET['code'])){
    		$viadeo->setAuthorizationCode($_GET['code']);
    		$viadeo->setAccessTokenFromCode();
    	}else{
    		$viLoginUrl = $viadeo->getAuthorizationURL();
    	}
     
    	if($viadeo->isAuthenticated()){
    		try{
    			$me = $viadeo->get('/me')->execute();
    			print '<pre>';
    			print_r($me);
    			print '</pre>';
     
    			print '<br />';
    			echo "<a href='".ViadeoHelper::getCurrentURL()."?disconnect=true'>Se d&eacute;connecter</a><br/>"; 
     
    		}catch(ViadeoAPIException $e){
    			echo "Erreur de l'API Viadeo.";
    		}catch(ViadeoAuthenticationException $f){
    			echo 'Erreur : '.$f->getMessage();
    		}
    	}
    ?>
     
    <?php if(isset($viLoginUrl)) :?>
    <a href="<?php echo $viLoginUrl ?>">Se connecter avec Viadeo</a>
    <?php endif ?>
    Le fichier viadeoapi.inc.php est le fameux SDK fourni par Viadéo, celui-ci est disponible en téléchargement sur leur plateforme.

    Dans le script ci-dessus, j'ai essayé en vitesse de créer d'une fonction permettant de former une url pour révoquer le jeton d'accès pensant que ça résoudrait le problème (c'était dans un élan de désespoir !) mais bien évidemment ça n'a pas dégagé le cookie qui malgrè tout, s'évertue à reconnecter le dernier utilisateur...

    Si quelqu'un a une solution ou une piste à laquelle je n'aurai pas songé je suis preneur !

    Merci à ceux ou celles qui auront pris le temps d'aller jusqu'au bout de ce long post.

    Cordialement.

  2. #2
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonsoir,

    J'ai regardé le sdk reference. Avec access token lors de la création de l'objet ça ne fonctionne pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $AT = "abcdef42ghijkl42mnopqr42stuvwxyz";  
    $VD = new ViadeoAPI($AT);
    Et ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $VD->disconnect();                       
    // if access_token storage is activated  
    // delete the cookie
    La méthode disconnect()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function disconnect() {
            $this->access_token = null;
            if ($this->getConfigKey('store') === true) {
                setcookie($this->getCookieName(), "", time() - 3600);
                unset($_COOKIE[$this->getCookieName()]);
            }
            return $this;
        }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Tout d'abord merci de votre réponse. Votre solution fonctionne également, c'est en effet une autre façon d'instancier l'objet puisque l'access_token à la création est un paramètre facultatif. Je viens de tester, la connection est bien effective, par contre je retrouve malheureusement le même problème. Une fois l'authentification réussie, la connection reste active grâce/à cause du cookie déposé par viadeo au moment de la connection.

    Par acquis de conscience quand j'ai testé votre solution, j'ai essayé avec le paramètre "strore" à "true" (au départ je l'avais défini à false ne voulant pas créer de cookie), voyant que dans la méthode disconnect() ce fameux cookie crée serait supprimé, mais malheureusement ça n'a aucune incidence. Le cookie viadéo est indépendant de celui défini dans le script.

  4. #4
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonsoir,

    Le cookie a un nom particulier?

    Il peut exister mais expiré. Non ?

    Natso

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Oui en effet le cookie en question se nomme "rememberMe" et a une période validité de 5 ans. La seule solution qu'a un utilisateur pour se déconnecter totalement du compte viadéo (hormis supprimer tous les cookies) serait, à la déconnection sur ma plateforme, de ne surtout pas oublier de retourner sur le site de Viadéo afin de se déconnecter également de leur service (seul le site Viadéo a la main sur ce cookie)... C'est assez contraignant .

Discussions similaires

  1. Facebook PHP SDK/Graph API
    Par smfrd8 dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 13/02/2014, 23h35
  2. existe-t-il un API PHP
    Par sebhm dans le forum Pentaho
    Réponses: 3
    Dernier message: 04/11/2009, 19h01
  3. Réponses: 1
    Dernier message: 27/12/2008, 11h59
  4. [LDAP] API PHP communicante avec un annuaire LDAP
    Par yoshï dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/04/2008, 10h31
  5. INFO AU SUJET DE L API PHP de Filemaker
    Par rbas1 dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 25/10/2006, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo