From 2efd6a493aeb36ef468207cb54ee6eb4eee56e24 Mon Sep 17 00:00:00 2001 From: Cool-Man Date: Mon, 21 Nov 2022 07:47:17 -0700 Subject: [PATCH] Authorization header should not be prefixed for bearer tokens, and should not be set in DiscordRestApiClient constructor if blank (it gets set later). If using bearer token, connect to regular gateway. --- src/Discord.Net.Rest/DiscordRestApiClient.cs | 5 +++-- src/Discord.Net.WebSocket/DiscordSocketApiClient.cs | 12 ++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 615e5ac12..52396432c 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -75,7 +75,8 @@ namespace Discord.API RestClient = _restClientProvider(baseUrl); RestClient.SetHeader("accept", "*/*"); RestClient.SetHeader("user-agent", UserAgent); - RestClient.SetHeader("authorization", GetPrefixedToken(AuthTokenType, AuthToken)); + if (!string.IsNullOrEmpty(AuthToken)) + RestClient.SetHeader("authorization", GetPrefixedToken(AuthTokenType, AuthToken)); } /// Unknown OAuth token type. internal static string GetPrefixedToken(TokenType tokenType, string token) @@ -83,7 +84,7 @@ namespace Discord.API return tokenType switch { TokenType.Bot => $"Bot {token}", - TokenType.Bearer => $"Bearer {token}", + TokenType.Bearer => $"{token}", // Bearer tokens are not prefixed _ => throw new ArgumentException(message: "Unknown OAuth token type.", paramName: nameof(tokenType)), }; } diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index 465c47a1d..2d23ebb3b 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -234,8 +234,16 @@ namespace Discord.API { if (!_isExplicitUrl && _gatewayUrl == null) { - var gatewayResponse = await GetBotGatewayAsync().ConfigureAwait(false); - _gatewayUrl = FormatGatewayUrl(gatewayResponse.Url); + if (AuthTokenType == TokenType.Bot) + { + var gatewayResponse = await GetBotGatewayAsync().ConfigureAwait(false); + _gatewayUrl = FormatGatewayUrl(gatewayResponse.Url); + } + else + { + var gatewayResponse = await GetGatewayAsync().ConfigureAwait(false); + _gatewayUrl = FormatGatewayUrl(gatewayResponse.Url); + } } gatewayUrl = _gatewayUrl;