如何从Node应用向Intuit QuickBooks API发起简单调用?
问题原因
你当前代码直接调用API接口前未完成OAuth2授权流程,没有获取有效access_token,所以接口返回缺少参数的错误。
正确配置步骤
- 第一步:先登录Intuit开发者后台,在你的应用配置中添加本地回调地址(示例用
http://localhost:5000/callback),替换原有代码中的官方沙盒调试重定向地址。 - 第二步:在express中添加授权跳转路由和授权回调路由,完成授权后将返回的凭证存入oauthClient实例。
- 第三步:修正API调用参数,查询账户接口的请求方法为GET,替换URL中的
{companyId}为你的沙盒公司实际ID。
修改后完整代码
const express = require('express') const OAuthClient = require('intuit-oauth') const port = process.env.PORT || 5000 const app = express() const oauthClient = new OAuthClient({ clientId:'替换为你的实际clientId', clientSecret: '替换为你的实际clientSecret', environment: 'sandbox', redirectUri: 'http://localhost:5000/callback', // 替换为你在后台配置的回调地址 logging:true }) // 授权跳转路由 app.get('/auth', (req, res) => { const authUrl = oauthClient.authorizeUri({ scope: [OAuthClient.scopes.Accounting], // 根据你需要的接口权限调整scope state: 'test-state' }) res.redirect(authUrl) }) // 授权回调路由 app.get('/callback', async (req, res) => { try { // 交换获取token const tokenResponse = await oauthClient.createToken(req.url) // 授权成功后调用测试API const apiResponse = await oauthClient.makeApiCall({ url: 'https://sandbox-quickbooks.api.intuit.com/v3/company/替换为你的沙盒公司ID/account/1?minorversion=14', method: 'GET', // 原代码POST方法错误,查询接口用GET headers: { 'Content-Type': 'application/json', } }) console.log('API返回结果:', apiResponse.json) res.send('API调用成功,结果已打印到终端') } catch (e) { console.log('错误信息:', JSON.stringify(e)) res.send('调用失败,请查看终端报错') } }) app.listen(port, () => { console.log(`🖥️ Server listening on port ${port}`) })
测试流程
- 启动服务后,在浏览器访问
http://localhost:5000/auth - 按照页面提示登录你的QuickBook沙盒账号完成授权
- 授权完成后会自动跳转回回调地址,终端会打印API返回的结果
内容的提问来源于stack exchange,提问作者Josh Simon
相关产品推荐
相关产品推荐

