Saya menggunakan php, oauth2, dan curl untuk terhubung ke Discord API dan menambahkan anggota ke server (guild).

Saya telah berhasil mengautentikasi pengguna menggunakan Sumpah2 dengan lingkup identifikasi, guild, dan guild.join. Saya memiliki access_token & token bot yang diperlukan.

Dari pemahaman saya di dokumen Discord API: https://discord.com/developers/docs/resources/guild# add-guild-member

Saya perlu menggunakan permintaan PUT dengan access_token (dengan lingkup guilds.join) dan header dengan Otentikasi: Bot Token ke titik akhir: https://discordapp.com/api/guilds/GUILDID/members/USERID

Saya telah melakukan ini tetapi menerima kesalahan 400 Permintaan Buruk. Saya tidak yakin apa masalahnya.

Konfigurasi

define('OAUTH2_CLIENT_ID', 'REDACTED');
define('OAUTH2_CLIENT_SECRET', 'REDACTED');

$guildid = REDACTED

$authorizeURL = 'https://discord.com/api/oauth2/authorize?client_id=REDACTED&permissions=0&redirect_uri=https%3A%2F%2FREDACTED%2Findex.php%3Faction%3Ddiscord&response_type=code&scope=identify%20guilds%20guilds.join%20bot';
$tokenURL = 'https://discordapp.com/api/oauth2/token';
$apiURLBase = 'https://discordapp.com/api/users/@me';
$apiURLGuilds = 'https://discordapp.com/api/users/@me/guilds';
$apiURLJoin = 'https://discordapp.com/api/guilds/'. $guildid . '/members/';

Fungsi gabung

function joinapiRequest($url,$userid) {
  $url = $url.$userid;

  $params = 'access_token='.session('access_token');
  


  $ch = curl_init($url);

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
  curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

  $bottoken = redacted;
  $headers[] = 'Authorization: Bot ' . $bottoken;
  $headers[] = 'Content-Type: application/json';
  $headers[] = 'Content-Length: '.strlen($params);
  
  
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

  $http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  $response = curl_exec($ch);

  echo 'join guild response <br />';
  var_dump($response);
  

  if($http == 201){
    return true;
  } else {
    return false;
  }


}

Tanggapan

string(42) "{"message": "400: Bad Request", "code": 0}" 

Bantuan apa pun akan sangat dihargai.

0
Kerblooy 9 Juli 2020, 07:18

1 menjawab

Jawaban Terbaik

Bagi siapa pun yang mencari jawaban, saya memperbaikinya dengan mengubah sintaks saat mengirim access_token ke:

$params = '{"access_token" : "'.session('access_token').'"}';
0
Kerblooy 9 Juli 2020, 17:30