Feishu からユーザーデータを同期する
はじめに
Feishu / Lark プラグインは、Feishu 組織のユーザーと部署を NocoBase に同期します。手動の全件同期に加え、HTTP コールバックまたは Stream 接続による差分更新に対応します。
事前準備
- Feishu / Lark と ユーザーデータ同期 プラグインをインストールして有効化します。
- Feishu オープンプラットフォームで企業自社アプリを作成します。詳細は認証:Feishu / Larkを参照。
- 下記の連絡先権限を有効化し、連絡先の権限範囲を設定します。
連絡先権限と権限範囲
アプリの権限管理で以下の権限を有効にします:
続けて連絡先権限範囲(アプリがアクセスできる部署とメンバー)を設定します:
- 開発設定 → 權限管理ページの「アクセス可能なデータ範囲」列の設定をクリックします(連絡先権限を有効化すると自動的に遷移します)。
- アクセスを許可する部署とメンバーを選択します。初回は全メンバーを推奨し、動作確認後に絞り込みます。
- OK をクリックして保存します。
ユーザーの基本情報を取得がない場合、API は名前を返さず 、同期後のニックネームが空になります。連絡先権限範囲と「アプリの利用可能範囲」(誰がアプリを使えるか)は別の設定であり、同期に影響するのは前者だけです。API 権限は読み取り可能なフィールドを、権限範囲は読み取り可能な部署とユーザーを決めます。両方の設定が必要で、変更後は全件同期を再実行してください。イベント購読は読み取り権限の代わりにはなりません。NocoBase はイベントごとに Feishu API で最新データを取得します。
Feishu 同期ソースを追加
ユーザーと権限 → 同期で Feishu / Lark タイプのソースを追加します:
保存して有効化した後、同期をクリックして初回の全件同期を行います。
イベント受信方式の選択
Stream モード
Stream モードは NocoBase サーバーから WebSocket の常時接続を維持します。公開コールバック URL やトークン・暗号鍵は不要です。
- NocoBase で Stream モードを選択し、保存して有効化します。
- プラットフォームのイベントとコールバックで受信方式をロングコネクション(WebSocket)に切り替え、連絡先イベントを購読します。
接続はソースの有効化時に自動で開始され(自動再接続付き)、ソースの更新・無効化・削除時に更新または切断されます。
Stream モードは公開の受信アドレスもリバースプロキシも不要で、イントラネット運用に適します。接続状態はアプリログで Feishu stream client を検索して確認できます。
HTTP コールバック
- NocoBase で HTTP コールバックを選択し、Verification Token と任意で Encrypt Key を設定します。少なくとも一方が必要です。
- ソースを保存し、画面に表示されたイベントコールバック URL をコピーします。
- プラットフォームのイベントとコールバック → イベント設定で、サーバーへの送信方式を選択し、URL を貼り付けて連絡先イベントを購読します。
コールバック URL は Feishu から到達可能である必要があります(本番環境では HTTPS)。Encrypt Key を設定するとコールバック内容は暗号化されます。
Verification Token または Encrypt Key がない場合、コールバックリクエストは拒否されます(401)。ソースを Stream モードに切り替えると HTTP エンドポイントは閉じられます(403)。
対応する差分イベント
Root ロールを持つユーザーは同期では削除されません。
同期フィールド
部署フィールド
ユーザーフィールド
部門責任者
部署データの責任者(リーダー)は NocoBase の部門責任者として同期されます。1 ユーザーが複数部署の責任者に なれるほか、責任者部署が主部署とは限りません。対象は権限範囲内の部署のみです。Feishu 側で解除された責任者は次回の同期で解除され、NocoBase で手動変更した責任者が上書きされる場合があります。
アバター・役職・社員番号などのその他フィールドは現在同期されません。
トラブルシューティング
- 同期結果が空、部署が欠ける:連絡先権限と権限範囲を確認。
- ニックネームが空:ユーザーの基本情報を取得(
contact:user.base:readonly)を有効化し、全件同期を再実行。 - ユーザーがスキップされる:識別子フィールドの値の有無と、認証器との一致を確認。
- HTTP コールバックが 401:Verification Token / Encrypt Key の未設定または不一致。403:ソースが Stream モードに切り替わっています。
redirect_uriやコールバック URL のエラー:プラットフォームの URL が NocoBase 表示と完全一致しているか(APP_PUBLIC_PATHプレフィックス含む)確認。- API レート制限で同期タスクが失敗:制限解除後に手動で再実行。

