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

# 独自のログインを持つサービスに接続する

> OAuth2 を使っているものの Base44 のコネクタではないサービスで、AI チャットがアプリ用に作成するバックエンド関数を使い、各ユーザーが自分のアカウントを接続できるようにします。

エネルギー、銀行、業界データのプロバイダーなど、一部のサービスは、アカウントの所有者がサービス自身のページでログインしてアクセスを承認した後にのみデータを共有します。このしくみを OAuth2 と呼びます。サービスが [コネクタカタログ](https://docs.base44.com/ja/Integrations/connectors-catalog) にない場合でも、バックエンド関数でログインフローを構築するよう AI チャットに依頼すれば接続できます。

> [!WARNING]
>
> バックエンド関数を使用するには、[Builder プラン](https://base44.com/pricing) 以上が必要です。

***

## 適切な方法を選ぶ

Base44 には、ほかのサービスに接続する方法がいくつかあります。独自のログインフローの構築は最も手間がかかります。まずは、より簡単な方法でサービスに対応できるかを確認してください。

**サービスに合った方法を選びます:**

* **サービスがコネクタカタログにある場合:** [コネクタ](https://docs.base44.com/ja/Integrations/Connectors.md) を使います。ログイン、トークンの保存と更新は Base44 が行います。[アプリユーザーコネクタ](https://docs.base44.com/ja/Integrations/Connectors.md#connector-types) を使うと、各ユーザーが自分のアカウントを接続できます。カタログのコネクタで [独自の OAuth クライアント](https://docs.base44.com/ja/Integrations/Connectors.md#using-your-own-oauth-client) を求められる場合も、それはコネクタなので、このページは必要ありません。
* **サービスから API キーが発行される場合:** キーを [シークレット](https://docs.base44.com/ja/Integrations/Using-integrations.md#adding-secrets) として保存し、バックエンド関数からサービスを呼び出すよう AI チャットに依頼します。ワークスペース全体で 1 つの API を共有するには、[カスタム OpenAPI インテグレーション](https://docs.base44.com/ja/documentation/integrations/using-custom-integrations.md) を使います。
* **サービスに OAuth2 ログインが必要で、コネクタがない場合:** このページで説明するように、バックエンド関数でフローを構築します。

> [!NOTE]
>
> カスタム OpenAPI インテグレーションと MCP 接続では、各ユーザー自身のアカウントを接続できません。カスタム OpenAPI インテグレーションは、誰がアプリを使っていても、すべての呼び出しで同じログイン情報を送信します。追加した MCP 接続は、構築中の AI チャット専用で、公開したアプリでは使えません。

***

## しくみ

Base44 は、カタログにないサービスのトークンを保存も更新もしません。そのため、アプリが独自のバックエンド関数でその処理を行います。これらの関数は AI チャットが作成します。

**独自のログインフローは 4 つの部分で構成されます:**

* **接続ボタン:** バックエンド関数が、ユーザーをサービスのログインページに送ります。その際、リクエストをそのユーザーに結び付ける 1 回限りのコードを付けます。
* **コールバック関数:** ユーザーがアクセスを承認すると、サービスはユーザーをアプリのバックエンド関数に戻します。この関数は 1 回限りのコードを確認し、サービスからの応答をそのユーザーのトークンに交換します。
* **トークンテーブル:** トークンはデータテーブルに、1 人につき 1 レコードで保存されます。読み取るのはバックエンド関数だけで、アプリのページが読み取ることはありません。
* **API 関数:** バックエンド関数がそのユーザーのトークンでサービスを呼び出します。トークンの期限が切れたら、リフレッシュトークンで新しいトークンを取得します。

各接続が誰のアカウントのものかを把握するため、アプリではユーザーのログインが必要です。詳しくは [ログインと登録の管理](https://docs.base44.com/ja/Setting-up-your-app/Managing-login-and-registration.md) を参照してください。

***

## OAuth アプリを登録する

アプリでログインを処理する前に、アプリをサービスに登録します。サービスからクライアント ID とクライアントシークレットが発行され、ログイン後にユーザーを戻す先を求められます。そのアドレスが、コールバック関数の公開 URL です。

各バックエンド関数には、次の形式の公開 URL があります。

```text theme={null}
https://your-app-name.base44.app/functions/yourFunctionName
```

ユーザーがアプリを開くアドレスを使います。カスタムドメインを接続している場合は、代わりにそのドメインを使います。例: `https://your-domain.com/functions/yourFunctionName`。サービスが複数のリダイレクト URI を受け付ける場合は、両方のアドレスを追加します。`enedisCallback` のように、コールバック関数の名前をここで決めておきます。後で AI チャットに同じ名前を伝えるためです。

**アプリをサービスに登録するには:**

1. サービスの開発者ポータルにログインし、OAuth アプリを作成します。サービスによっては、クライアントやアプリケーションと呼ばれます。
2. リダイレクト URI としてコールバック関数の URL を入力します。例: `https://your-app-name.base44.app/functions/enedisCallback`。
3. アプリに必要なスコープだけを選択します。
4. クライアント ID とクライアントシークレットをコピーします。
5. サービスの開発者向けドキュメントから、認可 URL とトークン URL をコピーします。

***

## ログインフローを構築する

関数、トークンテーブル、ユーザーがクリックするボタンは AI チャットが作成します。サービスの開発者向けドキュメントにある詳細を AI チャットに伝えてください。AI チャットは非公開のサービスのログイン設定を自分で調べられません。

> [!WARNING]
>
> クライアントシークレットをチャットのメッセージに入力しないでください。AI チャットに求められたら、AI チャットが表示するフォームに入力するか、自分で [シークレットとして追加](https://docs.base44.com/ja/Integrations/Using-integrations.md#adding-secrets) します。Base44 がキーを検出して隠すのは、よく知られたサービスのキーだけです。そのため、ほかのサービスのシークレットはメッセージに残ります。

**ログインフローを構築するには:**

1. アプリエディターに移動します。

2. サービスの URL、スコープ、登録したコールバック関数の名前を伝えて、フローの構築を AI チャットに依頼します。例:

   ```text theme={null}
   ログインした各ユーザーが OAuth2 で自分の Enedis アカウントを接続できるようにして、アプリで電力使用量を表示できるようにして。Enedis は Base44 のコネクタではないので、バックエンド関数でフローを構築して。

   - 認可 URL: [Enedis のドキュメントから貼り付け]
   - トークン URL: [Enedis のドキュメントから貼り付け]
   - スコープ: [選択したスコープ]
   - リダイレクト URI: [コールバック URL]。認可リクエストとトークン交換の両方で、この URL をそのまま使って。
   - クライアント ID とクライアントシークレットは、ENEDIS_CLIENT_ID と ENEDIS_CLIENT_SECRET のシークレットから読み取って。

   ユーザーに結び付いた 1 回限りの state 値を付けて、ユーザーを認可 URL に送る「Enedis を接続」ボタンを追加して。リダイレクト URI として enedisCallback という名前のバックエンド関数を作成して。この関数で state を確認し、コードをトークンに交換し、そのユーザーのトークンを保存して、ユーザーをアプリに戻して。トークンは、作成、読み取り、更新、削除の権限を管理者のみに限定したテーブルに保存し、サービスロールを使ってバックエンド関数からのみ読み書きして。アクセストークンの期限が切れたら更新し、更新に失敗した場合は「再接続」ボタンを表示し、ユーザーのトークンを削除する「接続解除」ボタンを追加して。
   ```

3. AI チャットからクライアント ID とクライアントシークレットを求められたら、表示されるフォームに入力します。

4. コールバック関数の名前が、登録した名前と完全に一致していることを確認します。一致しない場合は、名前の変更を AI チャットに依頼します。

5. **ダッシュボード** をクリックします。

6. **Data** をクリックし、トークンテーブルを選択します。

7. テーブル上部の **権限** をクリックし、レコードの作成、読み取り、更新、削除ができるのが管理者だけであることを確認します。詳しくは [データの権限を変更する](https://docs.base44.com/ja/Building-your-app/Managing-your-app-data.md#changing-data-permissions) を参照してください。

8. **Test permissions in preview** をクリックし、一般ユーザーとして操作して、トークンテーブルのレコードが表示されないことを確認します。

***

## 公開してテストする

サービスは常にユーザーを公開済みのアプリに戻します。そのため、コールバックでは、最後に公開したバージョンの関数が、その時点のシークレットで実行されます。テストの前にアプリを公開し、関数やシークレットを変更するたびに再度公開してください。

**接続をテストするには:**

1. アプリエディターに移動します。
2. アプリを公開します。
3. 公開済みのアプリを開いてログインします。
4. AI チャットが追加した接続ボタンをクリックします。
5. 使用が許可されているアカウントでサービスにログインし、アクセスを承認します。

***

## ユーザーが接続する方法

アプリにログインする各ユーザーが、自分のアカウントを接続します。接続ボタンをクリックし、サービス自身のページでログインしてアクセスを承認します。アプリがそのサービスのパスワードを見ることはありません。トークンはアプリのトークンテーブルに保存され、使用するのはバックエンド関数だけです。ただし、あなたやアプリのほかの編集者はダッシュボードでそのテーブルを表示できます。ほかの非公開データと同じように扱ってください。

ユーザーには、本人が所有するか使用を許可されたアカウントだけを接続してもらい、アプリに必要なアクセスだけを要求してください。どのデータを読み取り、それをどう使うかを、アプリ内でユーザーに伝えます。特に個人や世帯のデータを共有するサービスには、同意に関する独自のルールがある場合があります。公開する前に、サービスの利用規約を確認してください。

***

## トラブルシューティング

ログインフローが動作しない場合は、以下から該当する状況を探してください。

> [accordion] サービスでリダイレクト URI が一致しないと表示される
>
> サービスに登録したコールバック URL は、関数の URL と完全に一致している必要があります。アプリが動作しているのと同じドメインを使っていること、関数名が **Code** の `base44/functions` にあるフォルダ名と大文字・小文字も含めて一致していることを確認してください。

> [accordion] アプリに戻っても、アカウントが接続されていない
>
> アプリを公開してから、公開済みのアプリでもう一度試してください。それでも失敗する場合は、**Code** でコールバック関数のファイルを開き、**Logs** をクリックして、エラーを AI チャットに貼り付けます。AI チャットが関数を修正します。

> [accordion] ユーザーが頻繁に再接続しなければならない
>
> アクセストークンの期限が切れ、更新されていない可能性があります。リフレッシュトークンで更新するよう AI チャットに依頼してください。サービスによっては、特定のスコープや設定を要求した場合にのみリフレッシュトークンを送信します。サービスのドキュメントを確認してください。

> [!NOTE]
>
> このページは AI を使用して翻訳されました。最も正確で最新の情報については、[英語版](https://docs.base44.com/index.md) を参照してください。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.