SuperAPI AI 工具集

setup-flows-auth

前端与建站

查看项目

更新于 10-16 05:02

技能介绍

用途:为一个 React 应用接入 Flows 认证,使其能在 Fusion 中与 CDF 通信;适用于把已有 React 应用迁移到 Flows,或应用尚未接入 Flows 认证时。

选择流程:读取 app.json 的 infra 字段。若为 "appsApi",使用 Apps API(新 Fusion 应用宿主),认证来源为 @cognite/app-sdk 的 connectToHostApp,需额外包 @cognite/app-sdk;若缺失或其他值,使用 Classic(旧 Files API),认证来源为 @cognite/dune 的 DuneAuthProvider 与 useDune()。无 app.json 时询问用户,默认 Apps API。

检测与判定:读取 package.json、src/main.tsx(或 src/index.tsx)、vite.config.ts、app.json。若 Classic 已用 DuneAuthProvider 包裹 App,或 Apps API 已用 CogniteSdkProvider 包裹且子组件通过 useCogniteSdk() 获取客户端(需 @cognite/app-sdk >= 0.5.1),则视为已配置,不操作并报告 no-op。根据锁文件判断包管理器:pnpm-lock.yaml 用 pnpm,yarn.lock 用 yarn,否则 npm。

安装依赖:Classic 需 @cognite/dune、@cognite/sdk、@tanstack/react-query(运行时)与 vite-plugin-mkcert(开发);Apps API 需 @cognite/app-sdk、@cognite/sdk、@tanstack/react-query 与 vite-plugin-mkcert。已存在的跳过,按检测到的包管理器安装,开发依赖加 -D 或 --save-dev。

Vite 配置:只补充缺失项,不移除现有插件。Classic 引入 @cognite/dune/vite 的 fusionOpenPlugin 与 mkcert,设置 base: "./"、server.port: 3001、worker.format: "es"。Apps API 从 @cognite/app-sdk/vite 引入 fusionOpenPlugin 与 manifestCspPlugin,manifestCspPlugin() 必须放在插件首位,其余同上。

接入入口:Classic 在 src/main.tsx 用 QueryClientProvider 包裹 DuneAuthProvider 再包裹 App,组件内用 useDune() 取到已认证的 CogniteClient。Apps API 的 main.tsx 不包裹认证 Provider,而在 App.tsx 用 CogniteSdkProvider(含 loadingFallback、errorFallback)包裹内容组件,子组件用 useCogniteSdk() 获取客户端;在 Provider 外调用会抛错。

清理:移除已多余的认证 Provider/钩子、手动实例化 CogniteClient、OIDC/令牌代码及 CDF 环境变量(如 VITE_CDF_PROJECT、VITE_CDF_CLUSTER 等,由 Flows/宿主提供);不确定时保留并提示用户。

限制:资料未提供其他平台适配、收费、版本兼容范围以外信息,暂未提供。