> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.jp/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# OAuthの使用

> OAuthはアプリのためのセキュリティーで保護された認証手段です。パスワードではなく認証トークンを使用して、アプリをユーザーアカウントに接続します。 

OAuthはアプリをユーザーアカウントに接続するための安全な認証手段で、パスワードではなく認証トークンが使用されます。ユーザーが自分のHubSpotアカウントに[アプリをインストール](/apps/legacy-apps/public-apps/overview#install-an-app)できるようにするには、まず、OAuthの使用を開始します。

<Warning>
  ### 注：

  * 複数のHubSpotアカウントによるインストール用に設計されたアプリ、またはアプリマーケットプレイスに掲載されるアプリでは、OAuthを使用する必要があります。
  * HubSpotアカウントでアプリをインストールするユーザーには、[スーパー管理者](https://knowledge.hubspot.com/ja/user-management/hubspot-user-permissions-guide#super-admin)の権限、または[アプリマーケットプレイスのアクセス](https://knowledge.hubspot.com/ja/user-management/hubspot-user-permissions-guide#settings)権限が付与されている必要があります。
</Warning>

## 参考資料

* [OAuthクイックスタートガイド](/apps/legacy-apps/authentication/oauth-quickstart-guide)で紹介されているサンプルアプリは、OAuthの利用をできるだけ短時間で開始することを意図して設計されており、全ての手順を実際にご利用いただけます。
* [HubSpotアカデミーのコース](https://app.hubspot.com/l/academy/tracks/71/593/2967)では、HubSpotでOAuthを使い始める方法を短時間で習得できます。HubSpot-OAuthフローの詳細や、アクセストークンの更新方法を説明しています。

## OAuth認証の設定

アプリのOAuth認証を設定するには、次の手順に従います。

* まず、[HubSpot開発者アカウント](/getting-started/account-types#developer-accounts)で[アプリを作成](/apps/legacy-apps/public-apps/overview)します。アプリを作成すると、アプリ設定の［認証］ページで作成したアプリのクライアントIDとクライアントシークレットを確認できるようになります。\_ \_

<Frame>
  <img src="https://cdn2.hubspot.net/hubfs/53/MyHubSpotApp.png" alt="MyHubSpotApp" />
</Frame>

* 下記のように、クライアントIDとクライアントシークレット、および[クエリーパラメーター](#query-parameters)と[スコープ](#scopes)を使用して、認証URLを作成します。

* アプリをインストールするユーザーを認証URLに誘導し、ユーザーがアカウントを選択する画面を表示して、連携機能へのアクセスを許可できるようにします。以下に示すように、`/oauth/`と`/authorize`の間にアカウントIDを追加することで、特定のHubSpotアカウント用の認証URLを設定できます。アクセス権が付与されると、コードクエリーパラメーターが付加された`redirect_url`によってユーザーがアプリにリダイレクトされます。このコードとクライアントシークレットを使用して、HubSpotから[access\_tokenとrefresh\_token](/api-reference/auth-oauth-v1/guide)を取得します。

  * **認証URLの例**
    * **任意のアカウント**: `https://app.hubspot.com/oauth/authorize?client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&scope=contacts%20automation&redirect_uri=https://www.example.com/`
    * **特定のアカウント（ID 123456）**: `https://app.hubspot.com/oauth/123456/authorize?client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&scope=contacts%20automation&redirect_uri=https://www.example.com/`
  * **リダイレクトURLの例**: `https://example.com/?code=xxxx`
  * **エラーの例**: `https://www.example.com/?error=error_code&error_description=Human%20readable%20description%20of%20the%20error`

* `access_token`を使用して、当該HubSpotアカウントに対して行われたAPI呼び出しを認証します。

* `access_token`の有効期限が切れたら、`refresh_token`を使用して新しい`access_token`を生成します。

<Warning>
  ### 注：

  * リフレッシュトークンと初期アクセストークンを生成しない限り、ユーザーのアカウントの［接続されたアプリ］にアプリが表示されることはありません。\_ \_
  * アクセストークンはアプリから要求されたスコープを反映するものであり、ユーザーがHubSpotアカウントで実行可能な操作に関する権限や制限を反映するものでは<u>ありません</u>。例えば、ユーザーに自分が担当するコンタクトのみを表示する権限が付与されている場合、このユーザーが`crm.objects.contacts.read`スコープを対象としたリクエストを許可したとしても、生成されるアクセストークンでは、このユーザーが担当するコンタクトだけでなく、アカウント内の全てのコンタクトを表示できます。
</Warning>

## クエリーパラメーター

アプリの認証URLを作成する際には、以下のクエリーパラメーターが必須です。

| **パラメーター**     | **説明**                               | **使い方**                                                                                                                                                                                                                                                                |
| -------------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `client_id`    | アプリの固有IDとして機能するID。                   | アプリの認証設定ページから（上記の説明に従って）取得します。                                                                                                                                                                                                                                         |
| `redirect_uri` | 訪問者がアプリへのアクセス権を取得した後にリダイレクトされる宛先URL。 | アプリの認証設定ページでも、このURLを指定します\*\*。注\*\*: セキュリティー上の理由により、本番環境ではこのURLに`https`を使用する<u>必要があります</u>（`localhost`を使用したテスト環境では、`http`を使用することも可能です）。また、IPアドレスはサポートされていないため、<u>必ず</u>ドメインを使用してください。                                                                                  |
| `scope`        | アプリに対する権限セット（権限ごとにスペースで区切ります）。       | アプリの認証設定でチェックマークを付けたスコープは必須と見なされるため、このパラメーターに含めない場合は認証ページにエラーが表示されます。\_ \_また、ここに含まれたスコープへのアクセス権がないアカウント上にアプリをインストールしようとした場合、エラーが発生します。特定のスコープでアクセスできるエンドポイントの詳細については、[スコープに関するリファレンスドキュメント](/apps/legacy-apps/authentication/scopes#list-of-available-scopes)をご参照ください。 |

以下のパラメーターは任意で指定できます。

| **パラメーター**       | **使い方**                                                                        | **説明**                                                                                                                                                                                                                                                                                     |
| ---------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `optional_scope` | 貴社のアプリに対する任意アクセス許可（許可ごとにスペースで区切ります）。                                           | ユーザーがそのツールへのアクセス権を持っていないHubSpotアカウントを選択した場合（HubSpotの無料アカウントで**Content Hub** Enterpriseスコープを承認する場合など）、任意指定のスコープは自動的に認証リクエストから除かれます。\_ \_任意指定のスコープを使用する場合、許可されたスコープを把握するためにはアクセストークンまたはリフレッシュトークンを確認する必要があります。詳細については[スコープに関するリファレンスドキュメント](/apps/legacy-apps/authentication/scopes)をご覧ください。 |
| `state`          | 認証URLにこのパラメーターを含めた場合、ユーザーが`redirect_uri`に誘導される際に、ここで指定した値が状態クエリーパラメーターに格納されます。 | リダイレクトされてアプリに戻ってきたユーザーの状態を維持するために使用できる文字列値。                                                                                                                                                                                                                                                |

## スコープの設定

OAuthでは、アプリに対するスコープ（権限）を設定する必要があります。各スコープによって、一連のHubSpot APIエンドポイントへのアクセス権が与えられます。また、アプリによるHubSpotアカウント上の特定のツールへのアクセスを、ユーザーが許可できるようになります。

<Frame>
  <img src="https://www.hubspot.jp/hubfs/Knowledge_Base_2021/Developer/granular-scopes-selection.png" alt="スコープの詳細な選択" />
</Frame>

特定のAPIまたはAPIエンドポイントへのアクセスは、HubSpotアカウントのティアによって異なります。複数の異なるタイプのHubSpotアカウントで機能するアプリの場合は、`optional_scope`パラメーターを使用して、対応するあらゆるティアのスコープを含めることができます。これにより、HubSpotの無料アカウントを使用しているお客さまも、全てのスコープにはアクセスできなくても、アプリを認証できるようになります。認証されていない全てのスコープについては、アプリ側で確認および処理する必要があります。

スコープの完全なリストは[こちらのページ](/apps/legacy-apps/authentication/scopes)で確認できます。

## 関連ドキュメント

[HubSpotでの認証方式](/apps/legacy-apps/authentication/intro-to-auth)

[OAuthクイックスタートガイド](/apps/legacy-apps/authentication/oauth-quickstart-guide)

[トークンの管理](/api-reference/auth-oauth-v1/guide)
