用途に応じて認証方式を選択する。
用途:自社ポータル専用のカスタム開発
認証:Bearer トークン(期限なし)
特徴:シンプル・1ポータルのみ対応
ユースケース:社内ツール・データ同期・自動化スクリプト
用途:複数のお客様ポータルに対応する SaaS 製品
認証:OAuth 2.0(アクセストークン + リフレッシュトークン)
特徴:Marketplace 掲載・マルチテナント対応
ユースケース:ISV 製品・HubSpot 連携 SaaS
Authorization Code フローでお客様ポータルへのアクセス権を取得する。
-
1認可リクエスト(ユーザーを HubSpot にリダイレクト) アプリの「Connect with HubSpot」ボタンを押すと、HubSpot の認可画面に遷移。スコープと Client ID を含む URL にリダイレクトする。
-
2ユーザーが権限を承認 HubSpot の画面で「許可する」をクリック。指定したスコープへのアクセスを承認する。
-
3認可コードを受け取る(callback URL) HubSpot が指定の redirect_uri にアクセス。URL クエリパラメータに
codeが含まれる。 -
4code をトークンに交換 サーバー側で code + Client Secret を使い、アクセストークン + リフレッシュトークンを取得する。
-
5トークンを安全に保存 ポータル ID をキーにデータベースへ暗号化保存。アクセストークン(有効期間6時間)はリフレッシュトークンで随時更新する。
必要最小限のスコープを要求し、ユーザーの信頼を得る。
| スコープ | 権限 | 用途 |
|---|---|---|
crm.objects.contacts.read | コンタクト 読み取り | コンタクト情報の参照 |
crm.objects.contacts.write | コンタクト 書き込み | コンタクトの作成・更新 |
crm.objects.deals.read | 商談 読み取り | 商談情報の参照 |
crm.objects.deals.write | 商談 書き込み | 商談の作成・更新 |
crm.schemas.custom.read | カスタムオブジェクトスキーマ 読み取り | スキーマ構造の確認 |
content | CMS コンテンツ 読み書き | ブログ・ページ操作 |
forms | フォーム 読み書き | フォーム管理 |
transactional-email | トランザクションメール送信 | システムメール |
oauth | OAuth 基本(必須) | すべての OAuth App に必要 |
HubSpot App Marketplace に掲載するための要件と準備事項を整理する。
技術要件:OAuth 2.0 実装・HTTPS 必須・Webhook 署名検証・適切なエラーハンドリング
セキュリティ:ユーザーデータの最小収集・暗号化保存・GDPR / データ削除対応
UX 要件:インストールフロー(30秒以内)・エラーメッセージの明確さ・アンインストール機能
コンテンツ:アプリの説明・スクリーンショット・デモ動画・サポートドキュメント
テスト:開発者サンドボックスでの動作確認・複数ポータルでのテスト
app.uninstall Webhook を送信します。
このイベントを受け取ったら、そのポータルのトークンと個人データを削除してください。
これは Marketplace 審査の必須要件です。
✅ Chapter 9 チェックリスト
- Private App と Public App の使い分けを判断できる
- OAuth 2.0 Authorization Code フローを5ステップで説明できる
- CSRF 対策(state パラメータ)を実装できる
- アクセストークンの自動リフレッシュロジックを実装できる
- マルチポータル対応のトークン管理設計ができる
- 最小権限の原則に基づいてスコープを選択できる
- アンインストール Webhook でデータクリーンアップを実装できる
- Marketplace 申請の主要要件を理解した