CURL PUT

florire Messages postés 187 Statut Membre -  
florire Messages postés 187 Statut Membre -
Bonjour,

Je dois passé le paramètres 'access_token' en JSON dans ma requête PUT.

J'ai fais plein d'essais et je n'y arrive pas..

function joinGuild(){

        $info_request = "https://discordapp.com/api/v6/guilds/518723879297/members/32789049";
        $access_token = "dfdgfdgfdgfdgfdgfdgdg";
        $token_type = 'Bot';

        $data = array();
        $data['access_token'] = $_SESSION['Auth']['access_token'];

        $info = curl_init();
        curl_setopt_array($info, array(
            CURLOPT_URL => $info_request,
            CURLOPT_HTTPHEADER => array(
                'Content-Type: application/json',
                "Authorization: $token_type {$access_token}"
            ),
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_PUT => true,
            CURLOPT_POSTFIELDS => json_encode($data)
        ));
        
        $guilds = json_decode(curl_exec($info));
        $err = curl_error($info);
        curl_close($info);
        if ($err) {
            echo "cURL Error #:" . $err;
        } else {
            print_r($guilds);
        }
    }



stdClass Object ( [access_token] => Array ( [0] => This field is required ) )


Je n'arrive pas a envoyé cette information..

Merci de votre aide.

3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Et avec un JSON_ENCODE ?
    https://www.php.net/manual/fr/function.json-encode.php
    0
    1. florire Messages postés 187 Statut Membre 6
       
      Il y a déjà JSON_ENCODE.
      CURLOPT_POSTFIELDS => json_encode($data)


      J'ai essayé de la mettre avant mais ça change rien.
      $data = json_encode($data);
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Heu... vu le message d'erreur... ça ne serait pas plutôt (ou "également" devrais-je dire ) la variable $access_token (au niveau de la ligne "Authorization: $token_type {$access_token}" ) qui te pose problème ???
      0
  2. florire Messages postés 187 Statut Membre 6
     
    function addRole(){
            $info_request = "https://discordapp.com/api/v6/guilds/404527751954038804/members/515887327265030144/roles/409429082875494411";
            $access_token = "dfdgfdgfdgfdgfdgfdgdg";
            $token_type = 'Bot';
            $info = curl_init();
            curl_setopt_array($info, array(
                CURLOPT_URL => $info_request,
                CURLOPT_HTTPHEADER => array(
                    "Content-Type: application/json",
                    "Authorization: $token_type {$access_token}"
                ),
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_PUT => true
            ));
            
            $guilds = json_decode(curl_exec($info));
            $err = curl_error($info);
            curl_close($info);
            if ($err) {
                echo "cURL Error #:" . $err;
            } else {
                print_r($guilds);
            }
        }


    J'ai cette fonction qui fonctionne parfaitement.

    La fonction
    joinGuild()
    est une copie de celle ci.

    La seule différence c'est que dans
    joinGuild
    je dois ajouté l'envoie d'un paramètre json 'access_token' qui à pour valeur
    $_SESSION['Auth']['access_token']
    .

    doc: https://discord.com/developers/docs/resources/guild#add-guild-member

    J'ai mon bot/application discord qui est dans une guild (serveur) qui à toute les permissions dont l'autorisation d'invité des personnes.
    $access_token
    est le token d'accès a mon bot/application.
    $_SESSION['Auth']['access_token']
    est le token avec l'autorisation de l'utilisateur de rejoindre une guild.
    0
  3. florire Messages postés 187 Statut Membre 6
     
    J'ai fais la requête avec
    file_get_contents
    est la requête fonctionne. Pourquoi avec CURL ça ne veux pas marché..

                $postdata = json_encode(
                    array(
                        'access_token' => $_SESSION['Auth']['access_token'],
                    )
                );
                $api_token = "PRIVE";
                $request_URL = "https://discordapp.com/api/v6/guilds/518297/members/327049";
                    
                $resultat = file_get_contents($request_URL, false, stream_context_create(array(
                    'http' => array(
                        'method'  => 'PUT',
                        'header' =>
                                    'Content-Type: application/json' . "\r\n"
                                    . 'Authorization: Bot ' . $api_token . "\r\n"
                                    . 'Content-Length: ' . strlen($postdata) . "\r\n",
                        'content' => $postdata
                    )
                )));
    


            $info_request = "https://discordapp.com/api/v6/guilds/518297/members/327049";
            $access_token = "PRIVE";
            $token_type = 'Bot';
            
            $postdata = json_encode(
                array(
                    'access_token' => $_SESSION['Auth']['access_token'],
                )
            );
            $length = strlen($postdata);
            
            $info = curl_init();
            curl_setopt_array($info, array(
                CURLOPT_URL => $info_request,
                CURLOPT_HTTPHEADER => array(
                    "Content-Type: application/json",
                    "Authorization: $token_type {$access_token}",
                    "Content-Length: $length"
                ),
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_PUT => true,
                CURLOPT_POSTFIELDS => $postdata
            ));
            
            $guilds = json_decode(curl_exec($info));
            $err = curl_error($info);
            curl_close($info);
    
            if ($err) {
                echo "cURL Error #:" . $err;
            } else {
                print_r($guilds);
            }
    

    stdClass Object ( [access_token] => Array ( [0] => This field is required ) )
    0