Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using discord API with PHP & cURL [closed]

Tags:

php

curl

ssl

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?

like image 467
user3144480 Avatar asked Oct 01 '16 19:10

user3144480


People also ask

Does Discord use PHP?

Does Discord use PHP? We are using PHP programming language to create discord bot, for this, you need basic knowledge of it and a composer (https://getcomposer.org/) installed on your server. Note: PHP version must be 5.6 or above, we recommend to use PHP 7.

Is Discord API free?

Are there examples of free Discord APIs? DiscordBot offers all of its endpoints for free, but the price for other APIs in the Discord collection can vary. While most of the big games represented on the list have free APIs, others are paid or freemium.


1 Answers

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>'), 
like image 119
user3144480 Avatar answered Sep 30 '22 19:09

user3144480