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

Langage PHP Discussion :

Requête HTTP POST


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Requête HTTP POST
    Bonjour à tous,

    Actuellement, j'ai un soucis avec une requête POST . Lorsque je passe au file_get_contents, l'application plante .

    Voici mon code (j'utilise Laravel 5) ;

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    Route::get('login/linkedin', function()
    {
        $lk_credentials = Config::get('linkedin.public0');
        $provider = new LinkedIn($lk_credentials);
        //var_dump($lk_credentials, $provider);
        //exit();
     
        if(!Input::has('code')){
            //exit('debug');
            $provider->authorize();
        }else{
            try{
                $code = Input::get('code');
                if(strlen($code) == 0) return Redirect::to('/')->with('message', 'There was an error communicating with LinkedIn');
                $t = $provider->getAccessToken('authorization_code', array('code' => $code));
     
                Session::put('authorization_code', $code);
                session(['authorization_code' => $code]);
            }catch(Exception $e){
                return 'Unable to get access token';
            }
            try{
                $userDetails = $provider->getUserDetails($t);
                $resource = '/v1/people/~:(id,emailAddress,firstName,lastName,pictureUrl,dateOfBirth,location)';
                $params = array(
                    'oauth2_access_token' => $t->accessToken, 
                    'format' => 'json',
                );
                $url = 'https://api.linkedin.com' . $resource . '?' . http_build_query($params);
                $context = stream_context_create(array('http' => array('method' => 'GET')));
                $response = file_get_contents($url, false, $context);
                $data = json_decode($response);
     
                Session::put('data', $data);
                session(['data' => $data]);
     
                //return redirect('/')->with('data',$data);
            }catch(Exception $e){
                return 'Unable to get user details';
            }
            try{
                $params = array(
                    'grant_type' => 'authorization_code',
                    'code' => Session::get('authorization_code'),
                    'redirect_uri' => url('login/linkedin'),
                    'client_id' => '*****************',
                    'client_secret' => '***************',
                );
                //$url = 'https://www.linkedin.com/uas/oauth2/accessToken?'.http_build_query($params);
                $postdata = http_build_query($params);
                $opts = array('http' => 
                    array(
                        'method' => 'POST',
                        'header' => "Content-Type: application/x-www-form-urlencoded\r\nContent-Length: " . strlen($postdata) . "\r\n",
                        'content' => $postdata,
                    )
                );
                $context  = stream_context_create($opts);
                $url = 'http://www.linkedin.com/uas/oauth2/accessToken?';
                $result = file_get_contents($url, false, $context);
                var_dump($result);
                exit();
                $token = json_decode($result);
     
                return redirect('/')->with('data',$data);
            }catch(Exception $e){
                return 'Unable to get Request Token';
            }
        }
    });
    Est ce que quelqu'un pourrait m'aider ?

    Merci d'avance,
    Klonn.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux être plus précis que "plante" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Oui pas de soucis, j'aurais du l'être dés le début !

    Lorsque je passe au troisième try/catch, lors du file_get_contents l'application passe directement à l'exception.

    Tout se passe correctement sauf à ce moment là, du coup la récupération du fichier contenant mon "Request Token" ne se fait pas.

    Tandis que la connexion (en utilisant les sessions) fonctionne parfaitement (récupération des données utilisateur + authorization code) !

    Merci d'avance,
    Klonn

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et quelle exception est levée ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    En soi je n'ai pas de message d'erreur mais juste le message que j'ai mis en return dans mon catch qui est le suivant : 'Unable to get Request Token'

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Affiche la vraie exception au lieu d'un message personnalisé.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Voici le message d'erreur exact :

    ErrorException in routes.php line 100:
    file_get_contents(http://www.linkedin.com/uas/oauth2/accessToken?): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Après avoir jeter un coup d'oeil un cURL, j'en suis à ça :

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    Route::get('login/linkedin', function()
    {
        $lk_credentials = Config::get('linkedin.public0');
        $provider = new LinkedIn($lk_credentials);
     
        if(!Input::has('code')){
            //exit('debug');
            $provider->authorize();
        }else{
            try{
                $code = Input::get('code');
                if(strlen($code) == 0) return Redirect::to('/')->with('message', 'There was an error communicating with LinkedIn');
                $t = $provider->getAccessToken('authorization_code', array('code' => $code));
            }catch(Exception $e){
                return 'Unable to get access token';
            }
            try{
                $userDetails = $provider->getUserDetails($t);
                $resource = '/v1/people/~:(id,emailAddress,firstName,lastName,pictureUrl,dateOfBirth,location)';
                $params = array(
                    'oauth2_access_token' => $t->accessToken,
                    'format' => 'json',
                );
                Session::put('oauth2_access_token', $t->accessToken);session(['oauth2_access_token' => $t->accessToken]);
                $url = 'https://api.linkedin.com' . $resource . '?' . http_build_query($params);
                $context = stream_context_create(array('http' => array('method' => 'GET')));
                $response = file_get_contents($url, false, $context);
                $data = json_decode($response);
                Session::put('data', $data);session(['data' => $data]);
            }catch(Exception $e){
                return 'Unable to get user details';
            }
            try{
                if(count($_POST) > 0){
                    print_r($_POST);
                    exit();
                }
                $params = array(
                    'grant_type' => 'authorization_code',
                    'code' => Session::get('oauth2_access_token'),
                    'redirect_uri' => url('login/linkedin'),
                    'client_id' => '************',
                    'client_secret' => '***************',
                );
                $c = curl_init();
                curl_setopt($c, CURLOPT_URL, 'http://www.linkedin.com/uas/oauth2/accessToken?');
                curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($c, CURLOPT_POST,true);
                curl_setopt($c, CURLOPT_CUSTOMREQUEST, "POST");
                curl_setopt($c, CURLOPT_POSTFIELDS,$params);
                curl_setopt($c, CURLOPT_HEADER, false);
                curl_setopt($c, CURLOPT_HTTPHEADER, array(
                    'Content-Type: application/x-www-form-urlencoded',
                    )
                );
                $output = curl_exec($c);
                if($output === false){
                    trigger_error('Erreur curl : '.curl_error($c),E_USER_WARNING);
                    exit('Erreur');
                }
                else{
                    var_dump($output);
                    exit('Affiche');
                }
                curl_close($c);
                return redirect('/')->with('data',$data);
            }catch(Exception $e){
                return 'Unable to get Request Token';
            }
        }
    });
    Je récupère bien quelque chose, cependant j'ai une erreur qui est la suivante :

    string(156) "{"error_description":"missing required parameters, includes an invalid parameter value, parameter more than once. : ssl required","error":"invalid_request"}"

    Pourrais tu m'aider ou quelqu'un d'autre ?

    Merci d'avance

Discussions similaires

  1. Requête HTTP - POST avec socket
    Par kalylive dans le forum Réseau
    Réponses: 3
    Dernier message: 28/04/2008, 14h10
  2. [Réseau] envoyer une requête http POST
    Par rich25200 dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2008, 23h15
  3. Requête HTTP POST sous .Net
    Par Médinoc dans le forum Framework .NET
    Réponses: 2
    Dernier message: 30/10/2007, 17h30
  4. [LINUX] Simuler une requête HTTP POST ou GET
    Par Anified dans le forum Linux
    Réponses: 1
    Dernier message: 05/02/2007, 16h11
  5. Comment effectuer une requête http post ?
    Par Turtle_fr dans le forum 4D
    Réponses: 10
    Dernier message: 07/09/2006, 01h25

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