Php requete Token Oauth2

Fermé
florire Messages postés 151 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 15 juillet 2022 - Modifié par florire le 25/11/2018 à 13:44
florire Messages postés 151 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 15 juillet 2022 - 2 déc. 2018 à 19:49
Bonjour,

Je voudrais que les utilisateurs de mon site se connecte via leur compte Discord.
J'ai créer une application

Documentation discord Oauth2: https://discord.com/developers/docs/topics/oauth2

donc j'ai ma page 'http://monsite/index.php' avec le bouton login.
<a href="https://discordapp.com/api/oauth2/authorize?client_id=12316489832164315&redirect_uri=http://monsite/login.php&response_type=code&scope=identify+email">Login</a>

Le bouton login redirige vers la demande d'autorisation Discord qui renvoie à "http://monsite/login.php".
l'autorisation transmet '?code=frhzfkj5165ejhfzjehfe'.

La page 'http://monsite/login.php'
           $code = $_GET["code"];
            if (isset($_GET["error"])) {
                echo json_encode(array("message" => "Authorization Error"));
            } elseif (isset($code)) {
                $redirect_uri = "login.php";
                $token_request = "https://discordapp.com/api/oauth2/token";
                
                $token = curl_init();
                curl_setopt_array($token, array(
                    CURLOPT_URL => $token_request,
                    CURLOPT_POST => 1,
                    CURLOPT_POSTFIELDS => array(
                        "grant_type" => "authorization_code",
                        "client_id" => "12316489832164315",
                        "client_secret" => "KJejdemJHF2KJEJNFEMFJNFE-Hub",
                        "redirect_uri" => $redirect_uri,
                        "code" => $code,
                    )
                ));
                curl_setopt($token, CURLOPT_RETURNTRANSFER, true);
                $resp = json_decode(curl_exec($token));
                curl_close($token);
                if (isset($resp->access_token)) {
                    $access_token = $resp->access_token;
                    $info_request = "https://discordapp.com/api/users/@me";
                    $info = curl_init();
                    curl_setopt_array($info, array(
                        CURLOPT_URL => $info_request,
                        CURLOPT_HTTPHEADER => array(
                            "Authorization: Bearer {$access_token}"
                        ),
                        CURLOPT_RETURNTRANSFER => true
                    ));
                    $user = json_decode(curl_exec($info));
                    curl_close($info);
                    echo "<h1>Hello, {$user->username}#{$user->discriminator}.</h1><br><h2>{$user->id}</h2><br><img src='https://discordapp.com/api/v6/users/{$user->id}/avatars/{$user->avatar}.jpg' /><br><br>Dashboard Token: {$access_token}";
                } else {
                    echo json_encode(array("message" => "Authentication Error"));
                }
            } else {
                echo json_encode(array("message" => "No Code Provided"));
            }


le page affiche {"message":"Authentication Error"}.
Plein de recherche est rien trouvé pour m'aidé.
Sa bloque à l'envoie du code pour obtenir le token.

Merci de votre aide.

Bonne journée.
A voir également:

4 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
25 nov. 2018 à 15:23
Bonjour,
C'est donc que ton if ne retourne pas le résultat attendu
 if (isset($resp->access_token)) {

Fais donc, avant ton IF, un
print_r($resp);
et regarde ce que ça retourne.
Tu peux aussi vérifier si ton CURL ne retourne pas d'erreur via
 echo 'Erreur Curl : ' . curl_error($ch);

0