网站脚本调用Discord /api/v9/auth/login接口遇400错误排查
解决Discord登录接口captcha_key类型转换错误问题
错误信息翻译与分析
你收到的400错误对应的中文信息为:
{message: "无效的表单文本", code: 50035,…}
code: 50035
errors: {captcha_key: {_errors: [{code: "STRING_TYPE_CONVERT",…}]}}
captcha_key: {_errors: [{code: "STRING_TYPE_CONVERT",…}]}
message: "无效的表单文本"
核心问题是captcha_key字段存在字符串类型转换失败的问题——Discord登录接口要求该字段必须是合法字符串,但你提交的内容不符合格式要求。
排查及修复步骤
- 确认hCaptcha响应值的正确获取:从hCaptcha回调中拿到的必须是
response字符串,而非其他格式。示例代码:hcaptcha.render('hcaptcha-container', { sitekey: '你的站点密钥', callback: function(response) { // 将验证码响应字符串赋值给表单字段 document.querySelector('[name="captcha_key"]').value = response; } }); - 验证提交前的字段类型:提交表单前检查
captcha_key的值是否为非空字符串,避免传入null、undefined或对象:const captchaVal = document.querySelector('[name="captcha_key"]').value; if (typeof captchaVal !== 'string' || captchaVal.trim() === '') { alert('验证码未正确验证,请重试'); return false; } - 核对请求格式:如果用AJAX提交,确保请求体格式为
application/x-www-form-urlencoded或multipart/form-data,且captcha_key参数是纯字符串;若用JSON提交,需保证该字段被正确序列化为字符串类型。 - 检查字段名拼写:确认表单字段的
name属性严格为captcha_key,Discord接口对字段名大小写敏感。
内容的提问来源于stack exchange,提问作者Digitas Merero
相关产品推荐
相关产品推荐

