⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、英語版を参照してください。

背景
DifyにおけるOAuthには、開発者が理解し設計すべき2つの別々のフローがあります。フロー1: OAuthクライアントセットアップ(管理者/開発者フロー)
Dify Cloudでは、Difyチームが人気のあるツールプラグイン用のOAuthアプリを作成し、OAuthクライアントをセットアップするため、ユーザーは自分で設定する手間が省けます。セルフホストDifyインスタンスの管理者は、このセットアップフローを実行する必要があります。
Google Cloudプロジェクトを作成する
Google Cloudプロジェクトを作成する
- Google Cloud Consoleにアクセスし、新しいプロジェクトを作成するか、既存のプロジェクトを選択します
- 必要なAPI(例:Gmail API)を有効にします
OAuth同意画面を設定する:
OAuth同意画面を設定する:
- APIs & Services > OAuth consent screenに移動します
- 公開プラグインの場合はExternalユーザータイプを選択します
- アプリケーション名、ユーザーサポートメール、開発者連絡先を入力します
- 必要に応じて承認済みドメインを追加します
- テストの場合:Test usersセクションでテストユーザーを追加します
OAuth 2.0資格情報を作成する
OAuth 2.0資格情報を作成する
- APIs & Services > Credentialsに移動します
- Create Credentials > OAuth 2.0 Client IDsをクリックします
- Web applicationタイプを選択します
client_idとclient_secretが生成されます。これらを資格情報として保存します。
Difyに資格情報を入力する
Difyに資格情報を入力する
OAuthクライアント設定ポップアップにclient_idとclient_secretを入力して、ツールプロバイダーをクライアントとしてセットアップします。

リダイレクトURIを承認する
リダイレクトURIを承認する
Difyが生成したリダイレクトURIをGoogle OAuthクライアントのページに登録します:

DifyはセルフホストDifyの場合、
redirect_uriをOAuthクライアント設定ポップアップに表示します。通常、次の形式に従います:your-dify-domainはCONSOLE_WEB_URLと一致する必要があります。フロー2: ユーザー認可(Difyユーザーフロー)
OAuthクライアントを設定した後、個々のDifyユーザーは、プラグインが自分の個人アカウントにアクセスすることを認可できるようになります。
実装
1. プロバイダーマニフェストでOAuthスキーマを定義する
プロバイダーマニフェストのoauth_schemaセクションは、プラグインのOAuthに必要な資格情報と、OAuthフローが生成するものをDifyに伝えます。OAuthをセットアップするには、2つのスキーマが必要です:
client_schema
OAuthクライアントセットアップの入力を定義します:gmail.yaml
urlフィールドはサードパーティサービスのヘルプドキュメントに直接リンクします。これは困っている管理者/開発者の助けになります。credentials_schema
ユーザー認可フローが生成するものを指定します(Difyがこれらを自動的に管理します):OAuth + APIキー認証オプションを提供するには、
oauth_schemaとcredentials_for_providerの両方を含めてください。2. ツールプロバイダーで必要なOAuthメソッドを完成させる
ToolProviderを実装している場所に、以下のインポートを追加します:
ToolProviderクラスは、これら3つのOAuthメソッドを実装する必要があります(例としてGmailProviderを使用):
3. ツールでトークンにアクセスする
Tool実装でOAuth資格情報を使用して認証済みAPI呼び出しを行うことができます:
self.runtime.credentialsは現在のユーザーのトークンを自動的に提供します。Difyはリフレッシュを自動的に処理します。
OAuthとAPI_KEY認証の両方をサポートするプラグインの場合、self.runtime.credential_typeを使用して2つの認証タイプを区別できます。
4. 正しいバージョンを指定する
以前のバージョンのプラグインSDKとDifyはOAuth認証をサポートしていません。そのため、プラグインSDKのバージョンを以下に設定する必要があります:manifest.yamlに、最小Difyバージョンを追加します:
Edit this page | Report an issue