相关疑难解决方法(0)

尽管访问令牌明显有效,但不和谐添加公会成员 401 错误

我是 Discord 的 API 的新手,我正在处理一个需要能够以编程方式添加公会成员的项目。我已经学会了如何获取授权代码(带有标识和 guilds.join 范围),将其兑换为访问令牌,并获取用户 ID。最后一步是使用访问代码和用户ID添加公会。这个命令在这里有详细说明:

https://discordapp.com/developers/docs/resources/guild#add-guild-member

看来我需要向这个 URL 发送一个 PUT 请求:

https://discordapp.com/api/guilds/[GuildID]/members/[UserID]

但这会导致以下响应:

{"code": 0, "message": "401: Unauthorized"}

我尝试在授权标头中包含访问令牌:

授权:承载 [已编辑]

我还尝试向请求添加 JSON 正文:

{"access_token":"[已编辑]"}

两者都没有奏效。不出所料,同时使用两者也不起作用。

我想知道这是否是权限问题,但 Discord 确认我有 guilds.join 范围。这是我在为访问令牌交换授权码时收到的 JSON:

{"access_token": "[Redacted]", "token_type": "Bearer", "expires_in": 604800, "refresh_token": "[Redacted]", "scope": "identify guilds.join"}

识别范围有效,因为我能够检索用户及其 ID。但是 guilds.join 似乎不起作用。

我在下面包含了一些测试代码。我已标记“选项 1”和“选项 2”行以表示我通常不会在同一请求中同时使用这两种访问代码方法。但正如我之前提到的,我确实尝试了两者,但仍然出现 401 错误。

using (WebClient client = new WebClient())
{
    client.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");
    client.Headers.Add(HttpRequestHeader.Authorization, "Bearer [Redacted]");//Option 1
    string output = client.UploadString
    (
        "https://discordapp.com/api/guilds/[GuildID]/members/[UserID]",
        WebRequestMethods.Http.Put,
        "{\"access_token\":\"[Redacted]\"}"//Option 2
    );
}
Run Code Online (Sandbox Code Playgroud)

因为我想了解它是如何工作的,所以我更想知道如何使用普通的 …

c# oauth httpwebrequest oauth-2.0 discord

6
推荐指数
1
解决办法
2962
查看次数

标签 统计

c# ×1

discord ×1

httpwebrequest ×1

oauth ×1

oauth-2.0 ×1