You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Trustpilot认证报Unknown grant_type 调用API获取access token失败

问题修复方案

核心错误原因

你代码中的axios配置使用了不被支持的content字段传递请求参数,这不是axios的合法请求体配置项,导致你提交的grant_type等表单参数根本没有被正确发送到服务端,接口自然无法识别grant_type取值。
另外你代码中的secrect属于拼写错误,正确拼写为secret,如果环境变量对应的取值名正确,这个拼写错误也会导致Base64编码的认证头失效,触发认证类错误。

修正后的代码

trustPilot.getAuthToken = async () => {
    let apiKey = process.env.TRUSTPILOT_API
    // 修正拼写错误:secrect改为secret
    let secret = process.env.TRUSTPILOT_SECRET
    let baseEncoded = Buffer.from(`${apiKey}:${secret}`).toString('base64')
    console.log(baseEncoded, 'base')
    let authToken = null
    try {
        authToken = await axios({
            method: 'POST',
            url: `https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken`,
            headers: { 
                Authorization: 'Basic ' + baseEncoded, 
                'Content-Type': 'application/x-www-form-urlencoded' 
            },
            // 核心修正:content替换为axios标准的data字段
            data: `grant_type=password&username=${process.env.TRUSTPILOT_EMAIL}&password=${process.env.TRUSTPILOT_PASSWORD}`,
        })
        console.log(authToken, 'auth')
    } catch (error) {
        console.log(error.response, 'err')
        throw { code: '404' }
    }

    return authToken
}

额外优化建议

  • 如果你的账号密码包含&、=、空格这类特殊字符,建议使用URLSearchParams构造请求体,避免手动拼接字符串出现转义错误:
    const params = new URLSearchParams()
    params.append('grant_type', 'password')
    params.append('username', process.env.TRUSTPILOT_EMAIL)
    params.append('password', process.env.TRUSTPILOT_PASSWORD)
    // 把axios配置中的data替换为params即可
    
  • 确认你的API密钥、账号密码对应正确,该账号拥有对应商业单位的API调用权限。

内容的提问来源于stack exchange,提问作者Reem Obeid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:57:03