始める前に
HubSpotでOAuthを使用するには、次のものが必要です。- 開発者アカウント
- 開発者アカウントに関連付けられているアプリ
- アプリをインストールするためのHubSpotアカウント(既存のアカウントを使用するか、またはテストアカウントを作成することができます)
仕組み
HubSpotは、OAuth 2.0認証コード付与方式に対応しています。この処理は次の4つの基本ステップに分けることができます。- アプリによってブラウザーウィンドウを開き、ユーザーをHubSpot OAuth 2.0サーバーに導く
- 要求された権限をユーザーが確認し、アプリにアクセス権を付与する
- クエリー文字列の中に認証コードを指定した状態で、ユーザーがアプリにリダイレクトされる
- アプリが、アクセストークンの認証コードを交換するためのリクエストをOAuth 2.0サーバーに送信する
このガイドの内容
- クイックスタートアプリ:HubSpotのOAuth 2.0サーバーで認証されるNode.jsデモアプリ
- OAuthトークンの取得:アプリでユーザーを認証する方法
- OAuthトークンの使用:トークンによりクエリーを実行する方法
- OAuthトークンのリフレッシュ:HubSpotで提供されるリフレッシュトークンの使い方
このガイドの全てのコードサンプルは、JavaScript(Node.js)で記述されています
クイックスタートアプリ
HubSpotのAPIでOAuth認証を初めて使用する場合、Node.jsで記述されているOAuth 2.0クイックスタートアプリ(英語)を確認することを強くお勧めします。このサンプルアプリは、OAuth 2.0をできるだけ早く使い始められるように設計されており、後述のOAuthトークンの取得セクションに記載の全ての手順を実際に示しています。クイックスタートアプリを確認する
OAuthトークンの取得
1. 認証URLを作成し、ユーザーをHubSpotのOAuth 2.0サーバーに導く
HubSpotのOAuth 2.0サーバーにユーザーを導くための最初のステップは、認証URLの作成です。これによりアプリが特定されると共に、ユーザーに代わってアクセス権を求めるリソース(スコープ)が定義されます。認証URLの一部として指定できるクエリーパラメーターを以下の表に示します。このステップの詳細については、リファレンスドキュメントを参照してください。*でマークされたフィールドは必須です。
URLを作成したら、ユーザーをそのURLに誘導してOAuth接続プロセスを開始します。
以下のコードブロックは、さまざまなリダイレクトタイプの使用例を示しています。
サーバーサイドのリダイレクトを使用:
userA.integration.comやuserB.integration.comなど)にリダイレクトする必要がある場合があります。これを行うには、stateパラメーターを使用して、ユーザー状態に関する詳細情報をエンコードします。
1.Stateパラメーターのnonce値を生成して保存します。
2.Nonceをキーとして使用して、ユーザーの状態をローカルデータストアに保存します。
3.認証URLに、状態パラメーターとしてnonce値を含めます。
4.ユーザーが認証され、リダイレクトURLにリダイレクトされたら、stateパラメーターを検証し、保存されたユーザー状態を取得するためのキーとして使用します。
5.そこから、必要に応じてユーザーをリダイレクトします(例:ユーザー固有のURLに再度リダイレクトする)。
2. HubSpotがユーザーに同意を求める
HubSpotは、アプリの名前と、アプリがアクセス権限を要求しているHubSpot APIサービスに関する簡単な説明を含む同意ウィンドウをユーザーに提示します。ここで、ユーザーはアプリにアクセス権を付与できます。
3. OAuthサーバーのレスポンスを処理する
ユーザーがステップ2の同意確認を完了すると、OAuth 2.0サーバーはGETリクエストを認証URLで指定されたリダイレクトURIに送信します。問題が発生せず、ユーザーがアクセス要求を承認した場合、リダイレクトURIに対するリクエストがcodeクエリーパラメーター付きで返されます。ユーザーがアクセス権を付与しなかった場合、リクエストは送信されません。
例:
4. 認証コードをトークンと交換する
アプリはOAuth 2.0サーバーから認証コードを受け取ったら、コードをアクセス/リフレッシュトークンと交換できます。そのためには、URL形式でエンコードされたPOSTリクエストをhttps://api.hubapi.com/oauth/v1/tokenに送信します(以下に記載の値を使用)。このステップの詳細については、このリファレンスドキュメントを参照してください。
例:
OAuthトークンの使用
認証コードのフローが完了すると、ユーザーに代わってリクエストを行う権限がアプリに付与されます。これを行うには、トークンをベアラートークンとしてAuthorization HTTPヘッダーに指定します。具体的には、リファレンスドキュメントで確認できます。
例:
OAuthトークンのリフレッシュ
OAuthアクセストークンは定期的に有効期限が切れます。これは、トークンが侵害されても、攻撃者によるアクセスを極力短時間に限定するためです。トークンの利用可能な秒数は、認証コードがアクセストークンと交換された時点で、expires_inフィールドに指定されます。
アプリは受信したリフレッシュトークンを新しいアクセストークンと交換できます。そのためには、URL形式でエンコードされたPOSTリクエストをhttps://api.hubapi.com/oauth/v1/tokenに送信します。その際に、以下の値を使用します。このステップの詳細については、リファレンスドキュメントを確認してください。
例: