BSchleyer / redhost-panel

RED-Host Panel
MIT License
9 stars 10 forks source link

Discord-API Error #6

Closed GreenPepperYT closed 2 years ago

GreenPepperYT commented 2 years ago

Hey, wenn ich per Python versuche die RestAPI für den Discord zu callen (Code:)



authToken = "test"
url = "https://cp.test.de/index.php?page=api_v1_discord"

def call_api():
    print("Calling API")
    respone = requests.get(url, headers={"authToken": authToken}, params={"action": "getUserData"})
    print(respone.text)

call_api()```

Kriege ich folgenden Fehler: "TypeError: error_reporting(): Argument #1 ($error_level) must be of type ?int, string given in file" Woran liegt das bzw. ist der Code in welcher ich requests.get ausführe falsch? 
BSchleyer commented 2 years ago

Abend, die URL ist falsch, die Action muss auch direkt in der URL übergeben werden.

Als bspw: "https://cp.winterhost.de/index.php?page=api_v1_discord&action=getUserData" oder "https://cp.winterhost.de/api/v1/discord/getUserData". Die Parameter für die Action brauchst Du nicht im Body übergeben.

Die Angabe des Tokens muss als folgender Parameter übergeben werden: X-Auth-Token anstatt authToken. Einfach austauschen, dann erneut testen. :)

Grüße aus Gelsenkirchen, Björn Schleyer

GreenPepperYT commented 2 years ago

Alles klar, habe das soweit alles ausgetauscht und es sieht nun so aus:

import requests

authToken = "test"
url = "https://cp.test.de/api/v1/discord/getUserData"

def call_api():
    print("Calling API")
    respone = requests.get(url, headers={"X-Auth-Token": authToken})
    print(respone)

call_api()

Nun kriege ich eine 500 Response, kann sein das ich was übersehen habe, wenn ja, tuts mir leid.

BSchleyer commented 2 years ago

Wie ich sehe, hast Du ein Problem mit dem error_reporting - schau bestenfalls mal selbst auf die URL: https://cp.winterhost.de/api/v1/discord/getUserData

Welche PHP-Version hast Du eingestellt?

GreenPepperYT commented 2 years ago

Ich habe die PHP Version 8.0.18.

BSchleyer commented 2 years ago

Bitte zwischen PHP7.0 oder PHP7.4 auswählen, dann sollte alles funktionieren.

GreenPepperYT commented 2 years ago

okay. Habe das probiert und kriege auch eine 200. nur wie kriege ich die Daten von wem? Heißt aktuell ist bei getData alles null, was muss ich da ändern / eintragen damit die Daten vom User angezeigt werden?

BSchleyer commented 2 years ago

Hallo, habe gerade nochmal nachgeschaut, bei jedem API-Call muss im Body, die Support-PIN mit übergeben werden. Darüber wird alles wiedergegeben.

Heißt: "import requests

authToken = "test" url = "https://cp.winterhost.de/api/v1/discord/getUserData"

def call_api(): print("Calling API") respone = requests.get(url, headers={"X-Auth-Token": authToken}, params={"support_pin": "12345"}) print(respone)

call_api()"

Als Beispiel.

GreenPepperYT commented 2 years ago

Hey, Habe es grade ausprobiert und kriege leider trotz der Support-Pin überall null raus.

BSchleyer commented 2 years ago

Abend, persönlich kann ich dir dabei nicht weiterhelfen, da ich mit der Sprache nicht vertraut bin. Wie es in PHP gehen würde, könnte ich dir sagen.

Tut mir leid.

GreenPepperYT commented 2 years ago

Okay. Wäre im Grunde Python. Wüsstest du auch nicht, wie ich das ganze in JavaScript darstelle?

BSchleyer commented 2 years ago

Kann ich dir am Wochenende fertig machen, bin die ganze Woche noch unterwegs. Gerne auch im Discord anschreiben, dann kann vergisst man das nicht.

GreenPepperYT commented 2 years ago

Alles klar, danke. Werde dir dann per Discord schreiben.

BSchleyer commented 2 years ago

Das wäre ein Beispiel aus unserem JS-Discord-Bot.

const url = "https://portal.german-host.io/api/v1/discord/setDiscordID/";

        let headers = {
            "Accept": "application/json",
            "Content-Type": "application/json",
            "X-Auth-Token": "BOT_TOKEN"
        };

        try {
            fetch(url, {
                method: "POST",
                headers: headers,
                body: JSON.stringify({
                    'support_pin': `${supportpin}`,
                    'discord_id': `${interaction.member.id}`,
                })
            }).then(response => response.json()).then(json => {
                console.log(json);
                if(json.state == "success"){
                    // handling by success state
                } else {
                    // handling error
                }
            });
        } catch(err) {
            console.log(err);
        }
GreenPepperYT commented 2 years ago

Okay, nutzt ihr ein bestimmtes JS Package?

BSchleyer commented 2 years ago

Nein.

GreenPepperYT commented 2 years ago

Habe das ganze nun ausprobiert und kriege zwar einen 'success' jedoch ist immer noch alles null & die Discord-ID wird nicht gesetzt.


import fetch from 'node-fetch';

let headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "X-Auth-Token": "test"
};

try {
    fetch(url, {
        method: "POST",
        headers: headers,
        body: JSON.stringify({
            'support_pin': '71706',
            'discord_id': '123',
        })
    }).then(response => response.json()).then(json => {
        console.log(json);
        if(json.state == "success"){
            //handling by success state
        } else {
            //handling error
        }
    });
} catch (err) {
    console.log(err);
}```
BSchleyer commented 2 years ago

Ich habe gerade mal die Backend-Files dafür abgeändert und die API-Files auch. Einfach einsetzen, erneut testen.

GreenPepperYT commented 2 years ago

Alles klar, funktioniert danke. Soll ich für eine Frage zu den Emails einen neuen Issue öffnen oder kann ich diese Frage direkt hier stellen?

BSchleyer commented 2 years ago

Mir ist das recht egal, am besten wäre, wenn dafür ein neues angelegt wird.

GreenPepperYT commented 2 years ago

Alles klar, dann würde ich dafür ein neues eröffnen.