--- > [!NOTE] 目次 ```table-of-contents title: minLevel: 0 maxLevel: 0 includeLinks: true ``` --- > [!NOTE] リスト掲載用文字列 - [OneDrive](https://marketplace.dify.ai/plugin/langgenius/onedrive_datasource?source=http%253A%252F%252Flocalhost&language=ja-JP&theme=system)【@dify_ai】(2026年03月08日) --- > [!NOTE] この記事の要約(箇条書き) - **Dify用OneDriveデータソースプラグイン**: Microsoft OneDriveのファイルとフォルダーをDifyのデータソースとして利用可能にする。 - **主な機能**: 安全なOAuth 2.0認証(自動トークン更新)、個人用およびビジネス用OneDriveのファイル・フォルダーアクセス、リアルタイム同期、Microsoft Graph APIレート制限処理、大容量ファイル対応、マルチテナントサポート。 - **対応コンテンツ**: OneDriveに保存されている全てのファイルタイプ(Office文書、PDF、テキスト、画像、コードなど)。 - **要件**: Difyバージョン1.9.0以上、Python 3.12以上、Microsoftアカウント、Azure ADアプリ登録。 - **セットアップ**: プラグインインストール、Azure ADアプリ登録(API権限、クライアントシークレット)、Difyシステム設定でのOAuth認証情報(クライアントID, クライアントシークレット)構成。 - **認証フロー**: ユーザーがDifyからOneDriveに接続、Microsoftログインページへリダイレクトされ権限付与、Difyへリダイレクト後、データソースが利用可能になる。 - **使用例**: データソース構成、ファイルの閲覧、ファイルのダウンロード。 - **環境変数**: `ONEDRIVE_CLIENT_ID`、`ONEDRIVE_CLIENT_SECRET`。 - **レート制限**: Microsoft Graph APIの制限に対応するため、指数バックオフによる自動再試行、リクエストバッチ処理、ページネーション、メタデータキャッシュで最適化。 - **トラブルシューティング**: 無効なOAuthトークン、レート制限超過、アクセス拒否、トークン更新失敗などの一般的な問題に対する解決策とデバッグ手順を提供。 - **セキュリティ**: OAuth設定、トークン管理、アクセス制御に関するベストプラクティス(HTTPS、最小権限、定期的な監査など)を推奨。 - **制限事項**: データソースインスタンスごとに単一テナント、リアルタイム変更通知なし、SharePointリスト非対応など。 - **FAQ**: 共有ファイルアクセス、OneDrive for Business対応、条件付きアクセス、オフラインアクセス、ファイルサイズ制限、トークン更新頻度に関する回答。 - **サポート**: Difyドキュメント、Microsoft Graph APIドキュメント、Azure AD OAuthドキュメント、コミュニティフォーラム、プロフェッショナルサポートが利用可能。 - **バージョン**: 0.1.6、カテゴリー:データソース、タグ:ラグ、最大メモリ要件:256MB。 > [!NOTE] 要約おわり --- [マーケットプレイス](https://marketplace.dify.ai/) ![アプリアイコン](https://marketplace.dify.ai/api/v1/plugins/langgenius/onedrive_datasource/icon) ワンドライブ 0.1.6 OneDrive データソース 長寿 / onedrive\_データソース 詳細.インストール [インストール](http://localhost/plugins?package-ids=%5B%22langgenius%2Fonedrive_datasource%3A0.1.6%4006fe5d5d8e8b7775fa59b43d962116281854105cd23bd282838346bc5232150b%22%5D) ## OneDrive データソースプラグイン 包括的な OAuth 2.0 認証サポートを使用して、Dify のデータ ソースとして Microsoft OneDrive のファイルとフォルダーにアクセスします。 ## 特徴 - **安全な OAuth 認証**: 自動トークン更新機能を備えた Microsoft Azure AD OAuth 2.0 - **ファイルとフォルダーのアクセス**: 個人用およびビジネス用の OneDrive からファイルを参照してダウンロードします - **リアルタイム同期**: 最新のファイルコンテンツとメタデータにアクセス - **レート制限の処理**: Microsoft Graph API のレート制限の自動管理 - **大容量ファイルのサポート**: 大容量ファイルのダウンロードを効率的に処理します - **マルチテナント サポート**: 個人およびビジネス Microsoft アカウントで動作します ## サポートされているコンテンツタイプ - OneDriveに保存されているすべてのファイルタイプ - Microsoft Office ドキュメント (Word、Excel、PowerPoint) - PDFおよびテキスト文書 - 画像とマルチメディアファイル - コードと構成ファイル - 圧縮アーカイブおよびその他のバイナリ形式 ## セットアップとインストール ### 要件 - 異なるプラットフォーム バージョン >= 1.9.0 - Python 3.12以上 - 有効な Microsoft アカウント (個人またはビジネス) - Azure AD アプリ登録 (OAuth 用) ### インストール手順 1. **プラグインをインストールする** - DifyインスタンスにOneDriveデータソースプラグインを追加する - すべての依存関係がインストールされていることを確認する 2. **Azure AD アプリ登録を作成する** - Azureポータル > Azure Active Directory > アプリ登録に移動します - 「新規登録」をクリック - アプリを構成する(詳細な手順は以下を参照) 3. **プラグインの設定** - Difyシステム設定にOAuth認証情報を追加する - ユーザーアカウントで接続をテストする ## 認証設定 ### Azure AD アプリ登録 1. **新しいアプリ登録を作成する** ``` Name: Dify OneDrive Integration Supported account types: Accounts in any organizational directory and personal Microsoft accounts Redirect URI: https://your-dify-domain.com/console/api/oauth/callback ``` 2. **API権限の設定** ``` Microsoft Graph: - offline_access (Delegated) - User.Read (Delegated) - Files.Read (Delegated) - Files.Read.All (Delegated) ``` 3. **クライアントシークレットを生成する** ``` Go to: Certificates & secrets > New client secret Description: Dify OneDrive Integration Expires: 24 months (recommended) ``` 4. **設定値のメモ** ``` Application (client) ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Client Secret: your-generated-secret ``` ### Dify システム構成 Dify システム設定で以下を構成します。 ```yaml ヤムル1 # System OAuth Configuration 2 client_id: "your-azure-app-client-id" 3 client_secret: "your-azure-app-client-secret" ``` ### ユーザー認証フロー 1. ユーザーはDifyデータソース構成で「OneDriveに接続」をクリックします。 2. Microsoft ログインページにリダイレクトされました 3. アプリケーションに権限を付与する 4. アクセストークンを使用してDifyに自動的にリダイレクトされます 5. OneDriveデータソースは使用可能です ## 使用例 ### 基本的なデータソース構成 ```yaml ヤムル1 # datasources/onedrive_datasource.yaml 2 name: onedrive_datasource 3 type: online_drive 4 provider: onedrive_datasource 5 config: 6 max_files_per_request: 50 7 auto_refresh_tokens: true ``` ### ファイルの閲覧 ```python パイソン1 # Example: Browse root folder 2 request = OnlineDriveBrowseFilesRequest( 3 bucket="onedrive", 4 prefix="root", 5 max_keys=20 6 ) 7 8 response = datasource.browse_files(request) 9 for bucket in response.result: 10 for file in bucket.files: 11 print(f"File: {file.name}, Size: {file.size}, Type: {file.type}") ``` ### ファイルのダウンロード ```python パイソン1 # Example: Download a specific file 2 request = OnlineDriveDownloadFileRequest( 3 id="file-id-from-browse-response" 4 ) 5 6 for message in datasource.download_file(request): 7 # Process downloaded content 8 if message.type == "blob": 9 file_content = message.content 10 metadata = message.meta ``` ## 環境変数 ### 必要なシステム変数 ### 開発環境 ```bash バッシュ1 # For local development 2 export ONEDRIVE_CLIENT_ID="your-development-client-id" 3 export ONEDRIVE_CLIENT_SECRET="your-development-client-secret" 4 export DIFY_DEBUG=true ``` ## レート制限とパフォーマンス ### Microsoft Graph API の制限 - **テナントごとのアプリあたりのリクエスト数**: 10 分あたり 10,000 リクエスト - **アプリごとのユーザーあたりのリクエスト数**: 10 分あたり 1,000 リクエスト - **ダウンロード制限**: ファイルダウンロードあたり 4 GB ### プラグインの最適化 - レート制限に達した場合の指数バックオフによる自動再試行 - 複数のファイル操作のためのインテリジェントなリクエストバッチ処理 - 大規模なフォルダリストの効率的なページネーション処理 - API呼び出しを削減するためのメタデータのスマートキャッシュ ## トラブルシューティング ### よくある問題 #### 「無効なOAuthトークン」エラー **問題**: 初期設定後に認証が失敗する **ソリューション**: 1. アクセス トークンの有効期限が切れていないか確認します (トークンは 1 時間後に期限切れになります) 2. リフレッシュトークンが利用可能かつ有効であることを確認する 3. Azure AD アプリの権限が適切に構成されていることを確認する 4. 更新に失敗した場合は、OAuth フローを通じてユーザーを再認証します。 **デバッグ手順**: ```bash バッシュ1 # Check token expiration 2 curl -H "Authorization: Bearer YOUR_TOKEN" \ 3 "https://graph.microsoft.com/v1.0/me" 4 5 # If 401 Unauthorized, token needs refresh or re-authorization ``` #### 「レート制限を超えました」エラー **問題**: Microsoft Graph API へのリクエストが多すぎる **ソリューション**: 1. レート制限のリセットを待ちます(エラー応答に表示されます) 2. 同時に処理されるファイルの数を減らす 3. アプリケーションにカスタム再試行ロジックを実装する 4. 大きなフォルダ操作ではページ区切りを考慮する #### 「アクセスが拒否されました」エラー **問題**: 特定のファイルまたはフォルダにアクセスできない **ソリューション**: 1. Azure AD アプリに必要な Graph API 権限があることを確認する 2. ユーザーが特定の OneDrive コンテンツにアクセスできるかどうかを確認する 3. 組織アカウントに対する適切な管理者の同意を確保する 4. 共有コンテンツへのアクセスの Files.Read.All スコープを確認する #### トークン更新の失敗 **問題**: 自動トークン更新が機能しない **ソリューション**: 1. 保存された資格情報に refresh\_token が存在することを確認する 2. Azure AD アプリの構成で更新トークンが許可されていることを確認します 3. 承認時に offline\_access スコープが付与されていることを確認する 4. refresh\_token が取り消された場合はユーザーを再認証する ### デバッグモード トラブルシューティングのための詳細なログ記録を有効にします。 ```python パイソン1 import logging 2 logging.getLogger('datasources.onedrive').setLevel(logging.DEBUG) ``` ### ヘルスチェックエンドポイント データソースの接続をテストします。 ```bash バッシュ1 # Basic connectivity test 2 curl -X POST "https://your-dify-domain.com/api/datasources/onedrive/test" \ 3 -H "Authorization: Bearer YOUR_DIFY_TOKEN" \ 4 -H "Content-Type: application/json" ``` ## セキュリティのベストプラクティス ### OAuth 設定 - 安全なリダイレクト URI を使用する (HTTPS のみ) - 適切なスコープ検証を実装する - クライアントシークレットを定期的にローテーションする - OAuth アプリケーションの使用状況を監視する ### トークン管理 - Difyの暗号化ストレージを使用してトークンを安全に保管します - 適切なトークン更新ロジックを実装する - トークンの使用状況と有効期限を監視する - 侵害されたトークンを直ちに取り消す ### アクセス制御 - 必要最小限の権限を付与する - アクセス権限を定期的に確認し監査する - 適切な場合には条件付きアクセスポリシーを使用する - アクセスログを監視して不審なアクティビティを検出する ## 統合例 ### ナレッジベースの統合 ```yaml ヤムル1 # Example: Document knowledge base from OneDrive 2 datasource_config: 3 name: "Company Documentation" 4 type: onedrive_datasource 5 filters: 6 file_types: [".md", ".docx", ".pdf"] 7 folder_paths: ["/Documentation", "/Policies"] 8 processing: 9 chunking_strategy: "semantic" 10 embedding_model: "text-embedding-ada-002" ``` ### 自動コンテンツ処理 ```python パイソン1 # Example: Process all markdown files 2 async def process_documentation(): 3 files = await onedrive_datasource.browse_files({ 4 "prefix": "Documentation", 5 "file_filter": "*.md" 6 }) 7 8 for file in files: 9 content = await onedrive_datasource.download_file(file.id) 10 # Process with Dify's document processor 11 processed = await dify.process_document(content) 12 await knowledge_base.add_document(processed) ``` ## 制限事項と考慮事項 ### 現在の制限 - データソースインスタンスごとに単一テナントのサポート - リアルタイムの変更通知なし(ポーリングベース) - Microsoft Graph API を通じてアクセス可能なファイルに限定されます - SharePoint リストやその他の Microsoft 365 コンテンツはサポートされません ### パフォーマンスに関する考慮事項 - 大きなフォルダではページ区切りや複数のリクエストが必要になる場合があります - ファイルのダウンロードは Microsoft Graph API のタイムアウトの影響を受けます - 同時アクセスはMicrosoftのレート制限によって制限される可能性があります - ネットワーク遅延はファイルの閲覧とダウンロードのパフォーマンスに影響します ### ビジネスアカウントに関する考慮事項 - 組織アカウントには管理者の同意が必要になる場合があります - 条件付きアクセスポリシーはアクセスに影響を与える可能性があります - 多要素認証が必要になる場合があります - データ保管要件を考慮する必要がある ## よくある質問 ### Q: 他のユーザーの共有ファイルにアクセスできますか? **A**: はい、Files.Read.All 権限があれば、自分のアカウントで共有されているファイルにアクセスできます。 ### Q: これは OneDrive for Business でも機能しますか? **A**: はい、個人用の OneDrive と OneDrive for Business アカウントの両方をサポートしています。 ### Q: 組織に条件付きアクセス ポリシーがある場合はどうなりますか? **A**: プラグインは条件付きアクセスポリシーを尊重します。ユーザーは追加の認証要件を満たす必要がある場合があります。 ### Q: オフラインでファイルにアクセスできますか? **A**: いいえ、このデータ ソースでは Microsoft Graph API にアクセスするためにインターネット接続が必要です。 ### Q: ファイルサイズ制限はありますか? **A**: Microsoft Graph API は最大 4 GB のファイルをサポートします。これより大きなファイルには特別な処理が必要になる場合があります。 ### Q: トークンはどのくらいの頻度で更新されますか? **A**: アクセス トークンは有効期限が切れると自動的に更新されます (通常は 1 時間ごと)。 ## サポートとリソース ### ドキュメント - [Dify ドキュメント](https://docs.dify.ai/) - [Microsoft Graph API ドキュメント](https://docs.microsoft.com/en-us/graph/) - [Azure AD OAuth 2.0 ドキュメント](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow) ### コミュニティ - Difyコミュニティフォーラム - GitHub の問題とディスカッション - Microsoft Graph 開発者コミュニティ ### プロフェッショナルサポート - Difyエンタープライズサポート - Microsoft Premier サポート (Graph API の問題) - カスタム統合コンサルティングも利用可能 ## バージョン: 0.1.3 このプラグインは、エンタープライズ グレードのセキュリティ、OAuth 2.0 認証、シームレスなファイル アクセス機能を備えた包括的な OneDrive 統合を実装します。 カテゴリー データソース タグ ラグ バージョン 0.1.6 長寿 · 2025年10月9日 午後5時32分 要件 最大メモリ 256MB