Php curl PUT请求与不一致的API导致错误请求

Php curl PUT请求与不一致的API导致错误请求,php,curl,oauth-2.0,discord,Php,Curl,Oauth 2.0,Discord,我正在使用php、oauth2和curl连接到discordapi,并向服务器(guild)添加一个成员 我已经使用Oath2成功地对用户进行了身份验证,验证范围为identify、guilds和guilds.join。 我有访问令牌&所需的bot令牌 根据我在Discord API文档中的理解: 我需要使用带有access_令牌(带有guilds.join作用域)的PUT请求和带有身份验证的头:Bot令牌到端点: 我已经这样做了,但是收到一个400错误的请求。 我不确定问题出在哪里 配置 d

我正在使用php、oauth2和curl连接到discordapi,并向服务器(guild)添加一个成员

我已经使用Oath2成功地对用户进行了身份验证,验证范围为identify、guilds和guilds.join。 我有访问令牌&所需的bot令牌

根据我在Discord API文档中的理解:

我需要使用带有access_令牌(带有guilds.join作用域)的PUT请求和带有身份验证的头:Bot令牌到端点:

我已经这样做了,但是收到一个400错误的请求。 我不确定问题出在哪里

配置

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/';

连接函数

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;
  }


}

任何帮助都将不胜感激。

对于任何正在寻找答案的人,我通过更改将访问令牌发送到以下地址的语法来解决此问题:

$params = '{"access_token" : "'.session('access_token').'"}';
$params = '{"access_token" : "'.session('access_token').'"}';