【问题标题】:Why am I getting a '400: Bad Request' when i try to change my Discord avatar?当我尝试更改我的 Discord 头像时,为什么会收到“400:错误请求”?
【发布时间】:2021-02-08 02:46:08
【问题描述】:

在我收到 100 个人告诉我自动化用户帐户违反服务条款之前,我知道这一点并且我愿意承担风险,我只是来这里寻求帮助,因为我已经尝试了几个小时。

我检查了如何在Discord's API Reference 上更改我的个人资料图片,但是当我尝试时,我收到了“400:错误请求”响应。这是我的代码:

const fetch = require('node-fetch');
const fs = require('fs');
const tokens = fs.readFileSync('./tokens.txt', 'utf8').split('\n');

console.log('Changing profile pictures...');
let pfp = fs.readFileSync('./pfp.png', 'base64');
tokens.forEach(token => {
    fetch('https://discord.com/api/v8/users/@me', { method: 'PATCH', headers: { 'content-type': 'application/json', authorization: token.trim() }, body: { "avatar": `data:image/png;base64,${pfp}` } } )
    .then(res => res.json())
    .then(json => console.log(json));
});

我已经检查过,发送请求时令牌是正确的,base64 编码的图像也是正确的,但我得到一个“400:错误请求”响应,所以一定有问题,但很遗憾我无法弄清楚那东西是什么。如果有人可以提供帮助,我将不胜感激

【问题讨论】:

  • 我认为您必须将其作为二进制缓冲区读取,然后将其转换为 base64,openFileSync 不会这样做。
  • @DanielA.White 我正在使用readFileSync,它确实支持编码选项,我检查了它是否正确转换并且我将它正确解码回图像
  • 除了状态码之外,响应是否包含任何错误信息?
  • @derpirscher 不,这是我得到的回复:{ message: '400: Bad Request', code: 0 }

标签: javascript node.js api discord node-fetch


【解决方案1】:

根据docs,授权标头必须如下所示

Authorization: TOKEN_TYPE TOKEN

比如

Authorization: Bot MTk4NjIyNDgzNDcxOTI1MjQ4.Cl2FMQ.ZnCjm1XVW7vRze4b7Cq4se7kKWs

Authorization: Bearer CZhtkLDpNYXgPH9Ml6shqh2OwykChw

在您的请求中,您似乎只发送

Authorization: token

并且缺少令牌类型。

【讨论】:

  • 我已经向 discord 的 api 发出了大量的 api 请求,并且只有 authorization: token 工作得很好。我今天也尝试提出其他请求,它们工作正常,当我尝试更改我的头像时,我收到了一个错误的请求。
【解决方案2】:

我刚刚发现我必须为响应正文执行JSON.stringify()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 2016-04-24
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多