QuickBooks OnlineとNode.jsの統合ステップバイステップガイド
By manhnv, at: 2024年11月24日10:01
Estimated Reading Time: __READING_TIME__ minutes


QuickBooksオンラインとNodeJSを統合するステップバイステップガイド
QuickBooks Online (QBO)は、あらゆる規模の企業で使用されている人気の会計プラットフォームです。Node.jsとQBOを統合することで、開発者は請求書の同期、顧客レコードの更新、レポートのプログラムによる取得などのタスクを自動化できます。
このガイドでは、QuickBooks OnlineとNode.jsをステップバイステップで統合するプロセスを説明します。https://developer.intuit.com/app/developer/qbo/docs/develop/sdks-and-samples-collections/nodejsを参照してください。
前提条件
開始する前に、次のものがあることを確認してください。
1. QuickBooks Onlineアカウント:QuickBooks Onlineでサインアップしてください。
2. Intuit Developerアカウント:Intuit Developerで登録してアプリを作成してください。
3. Node.jsのインストール:バージョン14.x以降が推奨されます。
4. インストールするパッケージ:
express
axios
dotenv
quickbooks
npmを使用してこれらのパッケージをインストールします。
npm install express axios dotenv quickbooks
5. OAuth認証情報:Intuit DeveloperポータルからクライアントID、クライアントシークレット、リダイレクトURIを取得します。
ステップ1:Node.js環境の設定
1. 新しいプロジェクトディレクトリを作成します。
mkdir quickbooks-node-integration
cd quickbooks-node-integration
npm init -y
必要な依存関係をインストールします。
npm install express axios dotenv quickbooks
認証情報を格納する.env
ファイルを作成します。
CLIENT_ID=Your_Client_ID
CLIENT_SECRET=Your_Client_Secret
REDIRECT_URI=http://localhost:3000/callback
ステップ2:OAuth 2.0認証の設定
QuickBooks APIにアクセスするには、OAuth 2.0フローを実装してアクセストークンを取得する必要があります。
OAuthのための最小限のExpressサーバー
Expressを使用したOAuth認証の設定例を以下に示します。
const express = require('express');
const axios = require('axios');
require('dotenv').config();
const app = express();
const port = 3000;
const authUrl = `https://appcenter.intuit.com/connect/oauth2?client_id=${process.env.CLIENT_ID}&redirect_uri=${process.env.REDIRECT_URI}&response_type=code&scope=com.intuit.quickbooks.accounting`;
app.get('/', (req, res) => {
res.send(`Connect to QuickBooks`);
});
app.get('/callback', async (req, res) => {
const authCode = req.query.code;
try {
const response = await axios.post(
'https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer',
new URLSearchParams({
grant_type: 'authorization_code',
code: authCode,
redirect_uri: process.env.REDIRECT_URI
}),
{
auth: {
username: process.env.CLIENT_ID,
password: process.env.CLIENT_SECRET
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
);
const { access_token, refresh_token } = response.data;
res.send(`Access Token: ${access_token}
Refresh Token: ${refresh_token}`);
} catch (error) {
res.status(500).send('Error exchanging token: ' + error.message);
}
});
app.listen(port, () => console.log(`Server running at http://localhost:${port}`));
ステップ3:QuickBooks APIへの接続
アクセストークンを取得したら、quickbooks
ライブラリを使用してAPIとやり取りできます。
QuickBooksクライアントの設定
const QuickBooks = require('quickbooks');
// これらの値をあなたの値に置き換えてください
const qb = new QuickBooks(
process.env.CLIENT_ID,
process.env.CLIENT_SECRET,
process.env.REDIRECT_URI,
'access_token_here', // 実際のアクセストークンに置き換えてください
false, // サンドボックスモードの場合はtrueに設定します
true // minorVersionサポートを有効にします
);
ステップ4:基本操作の実行
顧客の取得
const QuickBooks = require('quickbooks');
// これらの値をあなたの値に置き換えてください
const qb = new QuickBooks(
process.env.CLIENT_ID,
process.env.CLIENT_SECRET,
process.env.REDIRECT_URI,
'access_token_here', // 実際のアクセストークンに置き換えてください
false, // サンドボックスモードの場合はtrueに設定します
true // minorVersionサポートを有効にします
);
顧客の追加
qb.createCustomer(
{
DisplayName: 'John Doe',
PrimaryEmailAddr: { Address: '[email protected]' }
},
(err, customer) => {
if (err) {
console.error('Error creating customer:', err);
} else {
console.log('Customer created:', customer);
}
}
);
顧客の更新
qb.updateCustomer(
{
Id: '1', // 実際の顧客IDに置き換えてください
SyncToken: '0', // 実際のSyncTokenに置き換えてください
DisplayName: 'John Doe Updated'
},
(err, customer) => {
if (err) {
console.error('Error updating customer:', err);
} else {
console.log('Customer updated:', customer);
}
}
);
ステップ5:エラー処理とデバッグ
- 無効なトークン:
refresh_token
を使用してトークン更新ロジックを実装します。
- レート制限:APIレート制限を尊重し、指数バックオフを使用して再試行します。
トークンの更新
async function refreshToken(refreshToken) {
try {
const response = await axios.post(
'https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer',
new URLSearchParams({
grant_type: 'refresh_token',
refresh_token: refreshToken
}),
{
auth: {
username: process.env.CLIENT_ID,
password: process.env.CLIENT_SECRET
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
);
console.log('New Access Token:', response.data.access_token);
} catch (error) {
console.error('Error refreshing token:', error);
}
}
ステップ6:デプロイとセキュリティ
dotenv
などの安全な設定ライブラリを使用して環境変数を格納します。
- AWS、Azure、またはHerokuなどのクラウドプラットフォームに安全にデプロイします。
- トークンを定期的にローテーションおよび更新します。
結論
QuickBooksオンラインとNode.jsを統合することで、会計プロセスを自動化し、ビジネス効率を向上させることができます。このガイドに従って、OAuth 2.0認証を設定し、顧客を管理するためのAPI呼び出しを行い、エラーとセキュリティを処理するためのベストプラクティスを学習しました。
追加のリソース