Using discord API with PHP & cURL
13,731
Ok, i just had to remove the first space in the header
CURLOPT_HTTPHEADER => array('Authorization: Bot <TOKEN>')
instead of
CURLOPT_HTTPHEADER => array('Authorization : Bot <TOKEN>'),
Author by
user3144480
Updated on July 04, 2022Comments
-
user3144480 almost 2 years
i've made a bot on discord, and i want to make request to the API to manage channels, display messages, those kind of things. I've started by using Postman, to make some calls to the API, it works fine.
Link to the API : https://discordapp.com/developers/docs/intro
Then i tried to do the request using PHP(wamp), with cURL, the request is sent, but the API send me back a 401 Unauthorized response, despite the fact that I sent the correct Authorization header. I've added the verbose option to get more infos :
* Hostname in DNS cache was stale, zapped * Trying 104.16.58.5... * Connected to discordapp.com (104.16.58.5) port 443 (#0) * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN, server accepted to use http/1.1 * Server certificate: * subject: OU=Domain Control Validated; OU=PositiveSSL; CN=discordapp.com * start date: 2016-03-01 00:00:00 GMT * expire date: 2017-03-03 23:59:59 GMT * subjectAltName: discordapp.com matched * issuer: C=GB; ST=Greater Manchester; L=Salford; O=COMODO CA Limited; CN=COMODO RSA Domain Validation Secure Server CA * SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway. > GET /api/channels/230833430827499520/messages HTTP/1.1 Host: discordapp.com Accept: */* Authorization : Bot <TOKEN> < HTTP/1.1 401 UNAUTHORIZED < Date: Sat, 01 Oct 2016 01:23:22 GMT < Content-Type: application/json < Content-Length: 43 < Connection: keep-alive < Set-Cookie: __cfduid=d23fd84fe760ad0b225004284861067621475285002; expires=Sun, 01-Oct-17 01:23:22 GMT; path=/; domain=.discordapp.com; HttpOnly < Strict-Transport-Security: max-age=31536000; includeSubDomains < Via: 1.1 google < Alt-Svc: clear < Server: cloudflare-nginx < CF-RAY: 2eac1be3385d148b-AMS < * Connection #0 to host discordapp.com left intact
My code :
$url = 'https://discordapp.com/api/channels/230833430827499520/messages'; $ch = curl_init(); $f = fopen('request.txt', 'w'); curl_setopt_array($ch, array( CURLOPT_URL => $url, CURLOPT_HTTPHEADER => array('Authorization : Bot <TOKEN>'), CURLOPT_RETURNTRANSFER => 1, CURLOPT_FOLLOWLOCATION => 1, CURLOPT_VERBOSE => 1, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_STDERR => $f, )); $response = curl_exec($ch); fclose($f); curl_close($ch);
I tried
file_get_contents
as well but didn't work. I can't see what's wrong, maybe SSL certificate? Any thoughts?