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

调用Coinbase addresses接口返回数据大多为空的问题求解

问题原因
  • 缺少必填的CB-VERSION请求头:返回结果里的警告已经明确提示需要传该参数,Coinbase v2 API强制要求携带格式为YYYY-MM-DD的版本头,不同版本对各币种地址的读取逻辑存在差异,XLM能正常返回是因为旧默认版本对其适配支持,其他币种未适配所以返回空数据。
  • 未生成对应币种的收款地址:Coinbase不会为用户的所有币种默认预生成链上地址,只有你主动为某一币种创建过至少一次收款地址后,addresses端点才会返回对应数据,XLM应该是你之前已经生成过地址所以能正常返回。
  • 权限配置缺失:如果你的OAuth授权流程中没有申请wallet:addresses:read权限,也会导致大部分币种地址读取失败,部分公开信息多的币种(如XLM)可能不受限。
  • 账户本身无链上地址:拉取的账户列表中包含法币账户、奖励账户、托管账户等非链上钱包类型,这类账户本身没有对应链地址,请求自然返回空数组。
解决思路
  • 第一步:添加CB-VERSION请求头,在所有请求的headers中添加参数'CB-VERSION': '2023-01-01'(可替换为任意近12个月内的公开稳定版本),修复版本警告问题。
  • 第二步:先判断账户类型,过滤掉法币账户、奖励账户等非加密币种的链上钱包,不需要对这类账户发起地址查询请求。
  • 第三步:针对返回空数据的正常加密币种账户,先调用POST /v2/accounts/${account.id}/addresses接口生成一个新的收款地址,后续再调用查询接口即可获取到数据。
  • 第四步:检查OAuth授权的scope配置,确保已经添加wallet:addresses:read权限,若缺失需要重新走授权流程申请对应权限。

修改后可参考的代码如下:

const getAccounts = async (auth) => {
    const options = {
        headers: {
          'Authorization': 'Bearer ' + auth.access_token,
          // 新增必填的版本头
          'CB-VERSION': '2023-01-01'
        }
    };
    let response = await axios.get('https://api.coinbase.com/v2/accounts', options);
    await getWallets(auth, response.data.data);
}

const getWallets = async (auth, accounts) => {
    const options = {
        headers: {
          'Authorization': 'Bearer ' + auth.access_token,
          'CB-VERSION': '2023-01-01'
        }
    };
    for (const account of accounts) {
        // 过滤非链上账户,可根据实际需要调整过滤规则
        if (account.type === 'fiat' || account.type === 'vault') continue;
        console.log('查询账户地址:', account.name);
        const url = `https://api.coinbase.com/v2/accounts/${account.id}/addresses`;
        try {
            let response = await axios.get(url, options);
            // 地址为空则先创建
            if (response.data.data.length === 0) {
                await axios.post(url, {}, options);
                response = await axios.get(url, options);
            }
            console.log('地址数据:', response.data.data);
        } catch (e) {
            console.log('请求失败:', e.response?.data || e.message);
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:06:03