Php 将用户添加到discord guild会生成未经处理的错误
编辑:我想知道我是否添加了错误的bot?bot与用户的OAuth 2位于同一应用程序上。此bot添加了以下内容: {my id}&scope=bot&permissions=267906503 我与Discord建立了OAuth2连接,使用它返回Discord用户和我的访问令牌。它的范围包括:Php 将用户添加到discord guild会生成未经处理的错误,php,discord,Php,Discord,编辑:我想知道我是否添加了错误的bot?bot与用户的OAuth 2位于同一应用程序上。此bot添加了以下内容: {my id}&scope=bot&permissions=267906503 我与Discord建立了OAuth2连接,使用它返回Discord用户和我的访问令牌。它的范围包括: $authUrl = $this->provider->getAuthorizationUrl([ 'scope' => [ 'identify',
$authUrl = $this->provider->getAuthorizationUrl([
'scope' => [
'identify',
'email',
'guilds.join']
]);
使用相同的discord应用程序,我设置了一个bot。该机器人是公会的成员,并且该机器人对聊天ping做出响应(这意味着它正在工作)。bot具有创建即时邀请权限
在我获得discord用户并生成访问令牌之后,我正试图将该用户添加到我的公会中
我在restcord库中尝试过这一点,然后直接用guzzle
$guzzle = new Client(['base_uri' => 'https://discordapp.com/api/v6']);
$guildId = $this->discordApplication->guildId();
$request = new Request('PUT', 'https://discordapp.com/api/v6/guilds/'.$guildId.'/members/'.$user->discordId(), [
'Authorization' => 'Bot '.$this->discordApplication->accessToken()->__toString(),
"Content-Type" => "application/json"
] );
var_dump($request);
$response = $guzzle->send($request);
var_dump($response);
它正在生成一个401错误。我已经查看并确保我的内容类型正确,授权头正确,OAuth范围正确,bot权限正确
输出为:
object(GuzzleHttp\Psr7\Request)#82 (7) {
["method":"GuzzleHttp\Psr7\Request":private]=>
string(3) "PUT"
["requestTarget":"GuzzleHttp\Psr7\Request":private]=>
NULL
["uri":"GuzzleHttp\Psr7\Request":private]=>
object(GuzzleHttp\Psr7\Uri)#83 (7) {
["scheme":"GuzzleHttp\Psr7\Uri":private]=>
string(5) "https"
["userInfo":"GuzzleHttp\Psr7\Uri":private]=>
string(0) ""
["host":"GuzzleHttp\Psr7\Uri":private]=>
string(14) "discordapp.com"
["port":"GuzzleHttp\Psr7\Uri":private]=>
NULL
["path":"GuzzleHttp\Psr7\Uri":private]=>
string(60) "/api/v6/guilds/{right guild id}/members/{the right user id}"
["query":"GuzzleHttp\Psr7\Uri":private]=>
string(0) ""
["fragment":"GuzzleHttp\Psr7\Uri":private]=>
string(0) ""
}
["headers":"GuzzleHttp\Psr7\Request":private]=>
array(3) {
["Host"]=>
array(1) {
[0]=>
string(14) "discordapp.com"
}
["Authorization"]=>
array(1) {
[0]=>
string(34) "Bot {my oauth2 bearer access token}"
}
["Content-Type"]=>
array(1) {
[0]=>
string(16) "application/json"
}
}
["headerNames":"GuzzleHttp\Psr7\Request":private]=>
array(3) {
["authorization"]=>
string(13) "Authorization"
["content-type"]=>
string(12) "Content-Type"
["host"]=>
string(4) "Host"
}
["protocol":"GuzzleHttp\Psr7\Request":private]=>
string(3) "1.1"
["stream":"GuzzleHttp\Psr7\Request":private]=>
NULL
}
Client error: `PUT https://discordapp.com/api/v6/guilds/{guildid}/members/{userid}` resulted in a `401 UNAUTHORIZED` response:
{"code": 0, "message": "401: Unauthorized"}
我想出来了
$request = new Request(
'PUT', 'https://discordapp.com/api/v6/guilds/'.$guildId.'/members/'.$user->discordId(),
[
'Authorization' => 'Bot '.$this->botToken,
"Content-Type" => "application/json"
],
'{"access_token" : "'. $this->discordApplication->accessToken()->__toString().'"}'
);