mcpField
B
b2c-config

b2c-config

github.com/salesforcecommercecloud开发57113 次安装今天更新
代码仓库

关于 b2c-config

b2c-config 是用于检查和排查 Salesforce B2C Commerce CLI 与 MCP 服务配置的技能,说明配置来源、优先级、身份验证及项目上下文,并区分 CLI 与 MCP 的操作方式。

主要功能

  1. 01检查解析后的配置
  2. 02说明配置来源优先级
  3. 03介绍 Storefront Next 回退值
  4. 04说明身份验证方式
  5. 05厘清 MCP 项目上下文

适用场景

  1. 01排查意外或缺失的配置值
  2. 02选择合适的配置文件和实例
  3. 03了解命令使用的身份验证方式

MCP 相关

该技能介绍 MCP 服务的配置感知工具,包括 config_inspect,以及按调用指定项目、配置和实例的覆盖参数。它还区分配置检查与 MCP 工具选择及客户端启动设置。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/salesforcecommercecloud/b2c-developer-tooling --skill b2c-config

安装后在 Claude Code 中输入/b2c-config确认已加载。

附带文件evals/trigger-evals.json

详细介绍

B2C 配置技能

对于常规检查,可直接调用 config_inspect 或 b2c setup inspect; 无需阅读技能内容。请对机密信息进行脱敏;通常不必手动读取 dw.json。配置来源或排查意外值/缺失值时,请阅读此处的相关部分。

任务CLIMCP偏好/差异回退方案
检查解析后的配置b2c setup inspectconfig_inspect均可;使用相同的解析器,默认会进行脱敏。MCP 支持按调用覆盖项目/实例。仅在需要编辑或问题未解决时检查源文件。
更改配置或进行身份验证b2c setup set、b2c setup、b2c auth无等效的配置写入方式使用 CLI;查看命令帮助以了解所需操作。编辑相应的配置来源。

如果无法使用 b2c,请使用 npx @salesforce/b2c-cli。

CLI 如何发现配置

CLI 会自动检测实例主机名、凭据、租户 ID、MRT API 密钥和其他设置。通常无需将 --server、--client-id、--client-secret、--username、--password、--tenant-id、--short-code 或 --api-key 作为标志传入——CLI 会从环境或配置文件中读取这些值。

来源及其解析顺序(优先级从高到低):

  1. CLI 标志和环境变量——显式值始终优先。Shell 变量优先于环境文件;项目 .env 文件中的工具包变量(SFCC_*、MRT_*)(或通过 --dotenv-file/SFCC_DOTENV_FILE 选择的文件)其次。
  2. 插件来源(高优先级)——自定义配置插件(例如,机密管理器)。
  3. dw.json——通过 --config/SFCC_CONFIG、环境文件、项目本地文件或共享的全局 dw.json 选择。支持单个实例,或使用 active: true/-i <name> 选择 configs[] 数组中的实例。
  4. Storefront Next 变量——仅用于补充所选 dw.json 条目中缺失的字段(见下文)。
  5. ~/.mobify——主目录中的文件(仅含 MRT API 密钥)。
  6. 插件来源(低优先级)。
  7. package.json 中的 b2c 键——非敏感的项目默认值(例如,shortCode、clientId、mrtProject)。clientSecret/password 等敏感字段不允许在此处设置。

不同来源之间会进行主机名保护:如果环境文件中的 SFCC_SERVER 与所选 dw.json 条目的主机名不同,则会跳过整个条目(发出 HOSTNAME_MISMATCH 警告)。如果没有任何来源设置租户 ID,且主机名是沙盒主机名(abcd-001.dx.commercecloud.salesforce.com),则会推导出租户 ID(abcd_001);如果配置的租户 ID 与之冲突,则会发出 TENANT_MISMATCH 警告。反之,如果没有任何来源设置主机名,且租户 ID 是沙盒租户 ID(abcd_001,包括 Storefront Next 的 f_ecom_abcd_001 组织 ID),则会推导出主机名(abcd-001.dx.commercecloud.salesforce.com)。

使用 --dotenv-file .env.staging(或 SFCC_DOTENV_FILE)指定其他环境文件,以替代 .env;该文件会替换 .env,而非叠加使用。--dotenv-file "" 表示不使用环境文件,--config "" 表示不使用 dw.json。

遇到意外值时,请使用 config_inspect 或 b2c setup inspect 检查解析后的配置及其来源。

Storefront Next 环境兼容性

解析器会将以下 Storefront Next 变量作为回退值,以便项目复用现有的 B2C Commerce 和 SLAS 配置。PUBLIC__app__* 和 COMMERCE_API_SLAS_SECRET 变量的优先级低于 dw.json:使用 -i stg 时,会保留 stg 自身的租户、短代码、站点和 SLAS 客户端,这些变量只会补充缺失项。

Storefront Next 变量解析后的字段默认工具包变量
PUBLIC__app__commerce__api__clientIdslasClientIdSFCC_SLAS_CLIENT_ID
PUBLIC__app__commerce__api__organizationIdtenantIdSFCC_TENANT_ID
PUBLIC__app__commerce__api__shortCodeshortCodeSFCC_SHORTCODE
COMMERCE_API_SLAS_SECRETslasClientSecretSFCC_SLAS_CLIENT_SECRET
PUBLIC__app__defaultSiteIdsiteIdSFCC_SITE_ID
MRT_PROJECTmrtProjectMRT_PROJECT
MRT_TARGETmrtEnvironmentMRT_ENVIRONMENT

显式标志、默认工具包变量以及所选的 dw.json 条目优先于这些回退值。MRT_PROJECT 和 MRT_TARGET 是工具包变量,保留工具包的优先级。

共享全局默认配置

当同一个 dw.json 格式的文件需要供 CLI、MCP 服务和 B2C DX VS Code 扩展共同使用时,可设置共享回退配置:

b2c setup default-config set /path/to/dw.json
b2c setup default-config get
b2c setup default-config unset

配置文件的选择顺序为:显式指定的 --config;进程中的 SFCC_CONFIG;环境文件中的 SFCC_CONFIG;项目本地的 dw.json;全局默认配置。全局文件不会替代显式指定的配置或项目本地配置。显式路径(--config / SFCC_CONFIG)会单独使用,不会搭配全局文件;setup inspect 会指出跳过全局默认配置的情况。

已发现的项目 dw.json 和全局 dw.json 会组成一个实例目录。-i <name> 会先搜索主文件,再搜索全局文件;同名的主文件条目会覆盖全局条目。每个选定的实例都是完整的,其字段不会与另一个文件中的匹配条目合并。实例列表、移除和设为活动实例的操作会同时作用于两个文件;创建实例时,若存在主文件,则写入主文件,否则写入全局 dw.json。

不使用 -i 时,活动的主实例优先。如果主配置位于根级且没有 active 字段,则会隐式作为默认实例;将其根级配置设为 active: false,即可选择活动或默认的全局实例。b2c setup inspect 会在 Sources 部分显示两个文件,并标记所选文件。

MCP 项目上下文

安装 MCP 或选择工具时,如果可用,请使用 mcp/b2c-mcp-server 或 MCP 配置指南(b2c docs read mcp-configuration)。 这些是客户端启动设置;config_inspect 会报告 B2C 值及其来源,而不是已启用的工具集或客户端筛选条件。项目 .env 不会选择 MCP 工具。

本地 MCP 项目工具接受 projectDirectory。解析 B2C/MRT 配置的工具接受相同的扁平参数:projectDirectory、configPath 和 instanceName。此覆盖对于插件安装尤其重要,因为 MCP 进程的工作目录可能是插件目录,而不是已打开的项目。对于每次配置感知调用,MCP 服务都会:

  1. 从 projectDirectory 解析 .env。
  2. 应用该文件中的所有受支持的 B2C/MRT 环境变量。
  3. 按以下顺序选择 dw.json 格式的配置文件:每次调用指定的 configPath;启动参数 --config / SFCC_CONFIG;项目 .env 中的 SFCC_CONFIG;${projectDirectory}/dw.json;共享全局默认配置。指定显式路径时,不使用共享全局默认配置。项目 .env 中的 Storefront Next 变量仅用于填补 dw.json 中缺少的值。
  4. 从 projectDirectory 解析每次调用指定的相对 configPath 和项目 .env 中的 SFCC_CONFIG 值。
  5. 如果提供了 instanceName,则先从主文件中选择,再从共享全局 dw.json 中选择,且不会更改任一文件。
  6. 继续使用常规工具配置来源,包括已注册的插件来源、MRT 凭据和 package.json。
  7. 如果 cartridgeDirectory、buildDirectory 和 outputDirectory 等专用路径是相对路径,则从同一根目录解析。

项目 .env 的值仅作用于对应的 MCP 调用,因此一个项目的环境不会泄漏到另一个项目。

每个项目/配置感知结果都包含权威且精简的 resolution 块。该块会报告所选项目、配置文件、实例、主机名和专用目录,不依赖工具描述中嵌入的路径。会话和监视器启动调用会保留此信息,其列表工具也会将其公开,以供后续调用使用。MCP config_inspect 工具还会返回完整的来源关系图,并使用与 b2c setup inspect 相同的 SDK 解析器和已注册的 CLI 插件配置来源。使用 projectDirectory、configPath 和/或 instanceName 来比对预期的项目、文件和实例。

dw.json 键名大小写

dw.json 中的字段名支持 驼峰命名法和短横线命名法,两者等效。例如:

两种形式均可使用
clientId ≡ client-id
clientSecret ≡ client-secret
codeVersion ≡ code-version
tenantId ≡ tenant-id
shortCode ≡ short-code ≡ scapi-shortcode
webdavHostname ≡ webdav-hostname ≡ webdav-server ≡ secureHostname
certificatePassphrase ≡ certificate-passphrase ≡ passphrase

server(对应 hostname)等旧别名仍受支持。如果某个值未被读取,通常不是大小写导致的——请检查拼写,然后运行 b2c setup inspect,查看 CLI 实际解析的内容。

dw.json 的 JSON Schema 已发布于 https://salesforcecommercecloud.github.io/b2c-developer-tooling/schemas/dw.schema.json(B2C DX VS Code 扩展会自动应用该 Schema)。将其添加为 dw.json 中的 "$schema",即可启用编辑器验证和自动补全。

完整的字段参考请参阅配置指南(b2c docs read guide-configuration)。

身份验证

与 B2C Commerce 实例交互的大多数命令都需要身份验证。CLI 支持多种方式:

  • 客户端凭据(API 客户端): 在 dw.json 或环境变量中配置 clientId 和 clientSecret。这是自动化/CI 场景下的默认方式。
  • 使用账户登录: 在任何启用了 OAuth 的命令中使用 --user-auth,即可在浏览器中使用你的 Account Manager 账户登录。
  • 基本身份验证: 为 WebDAV 操作配置 username 和 password。
  • 有状态会话: 使用 b2c auth login 保持登录状态;如果未配置其他客户端,后续命令会复用已保存的会话。客户端凭据无需会话(每个命令都会获取令牌);b2c auth client 用于兼容 sfcc-ci client:auth。
  • 仅配置服务: 上传代码、查看日志和使用 webdav 命令只需要主机名;出现提示时,用户可在浏览器中使用其 Account Manager 账户登录。
  • 查看当前使用的方式: b2c setup inspect 会显示实例的身份验证方式;b2c auth status 会显示当前登录用户。
--user-auth 标志

许多命令支持使用 --user-auth 通过账户登录,而非使用客户端凭据。SCAPI Admin API 暂不支持此方式(release 26.8):使用 --user-auth 时,同时支持 OCAPI 的命令会采用该方式,而 --api-backend scapi 则会报错。以下情况适合使用此方式:

  • 未配置 clientSecret
  • 需要用户级权限(例如 Account Manager 管理员角色)
  • 进行交互式操作
# Sign in with your account
b2c sandbox list --user-auth
b2c am users list --user-auth
b2c auth token --user-auth

编码 Agent 可在能够打开浏览器的场景中使用 --user-auth。请勿将其与 --auth-methods 组合使用。

在代理后运行: 如果浏览器无法访问 localhost:8080(例如,在容器中运行或位于反向代理之后),请将 SFCC_REDIRECT_URI 设置为代理 URL。本地 OAuth 服务仍会监听默认端口(或 SFCC_OAUTH_LOCAL_PORT),但发送给 Account Manager 的重定向 URI 会使用你的代理 URL。请将代理 URL 添加到 Account Manager 中 API 客户端的重定向 URL 列表。

租户 ID 和组织 ID

B2C Commerce 使用两个相关标识符:

  • 租户 ID — 短格式(例如,zzxy_prd 或 zzxy-prd)
  • 组织 ID — 带有 f_ecom_ 前缀的 SCAPI 格式(例如,f_ecom_zzxy_prd)

CLI 会自动规范化这些格式并在两者之间转换。你可以在配置或标志中使用任一格式 — CLI 会处理转换。它也会从主机名中提取租户 ID(例如,zzxy-prd.dx.commercecloud.salesforce.com 会解析为 zzxy_prd)。

在 dw.json 或环境变量中,使用 tenantId 配置键。CLI 在发起 SCAPI 调用时会添加 f_ecom_ 前缀。

检查配置

使用 b2c setup inspect 查看解析后的配置,并了解每个值的来源。使用 b2c setup instance 命令管理具名实例配置。

注意: b2c setup config 可作为 b2c setup inspect 的别名使用。

适用场景

在以下情况下使用 b2c setup inspect:

  • 确认当前使用的是哪个配置文件
  • 检查是否正确读取了环境变量
  • 确认凭据已加载,以排查身份验证失败
  • 了解凭据来源的优先级(dw.json、环境变量或插件)
  • 查找主机名不匹配保护问题
  • 确认已从 ~/.mobify 加载 MRT API 密钥
查看当前配置
# Display resolved configuration (sensitive values masked by default)
b2c setup inspect

# View configuration for a specific instance from dw.json
b2c setup inspect -i staging

# View configuration with a specific config file
b2c setup inspect --config /path/to/dw.json
调试敏感值
# Reveal secrets only when the user explicitly requests their values
b2c setup inspect --unmask
用于脚本的 JSON 输出
# Output as JSON for parsing in scripts
b2c setup inspect --json

# Pretty-print with jq
b2c setup inspect --json | jq '.config'

# Check which sources are loaded
b2c setup inspect --json | jq '.sources'

更改单个值

使用 b2c setup set、get 和 unset 更改单个值。它们会为你选择文件:优先使用已提供该值的 dw.json 条目或项目 .env,否则使用所选实例的 dw.json 条目。如果值来自 shell 环境、~/.mobify 或其他只读来源,或者未选择实例,则这些命令会拒绝操作且不会写入。

b2c setup set scapi-schemas=./scapi-schemas
b2c setup set code-version version2 -i staging
b2c setup set safety '{"level":"NO_DELETE"}'   # non-string keys take JSON
b2c setup get code-version                      # value on stdout, source on stderr
b2c setup get client-secret                     # masked; --unmask only when asked
b2c setup unset code-version

键使用 dw.json 中的名称。值会根据 dw.json 架构进行检查。

IDE 集成

使用 b2c setup ide 配置使用已解析 CLI 配置的 IDE 工具,并启用 Script API 智能感知。

# Vendor Script API TypeScript definitions + jsconfig.json (plain VS Code, WebStorm, etc.)
b2c setup ide vscode-types

# Print the TS Server plugin path for LSP-based editors (Neovim, Helix, Zed, ...)
b2c setup ide tsserver-plugin --json

B2C DX VS Code 扩展无需设置 — 它会在运行时注入相同的 TypeScript Server 插件。

OpenShell 沙箱(Beta)

b2c setup openshell 会根据已解析的配置创建 NVIDIA OpenShell 沙箱。机密信息保留在 OpenShell 网关上,沙箱只能访问正在使用的 B2C 主机,并遵循已配置的 Safety Mode 级别(若未设置,则为 NONE);Safety Mode 规则也会沿用。此操作需要已运行网关的 openshell CLI 和 Docker。

# Sandbox for the active instance at the configured Safety Mode level
b2c setup openshell

# Read-only sandbox
b2c setup openshell --safety-level READ_ONLY

# Allow writes but not deletes; include the MCP server
b2c setup openshell --safety-level NO_DELETE --mcp

# Write the policy, profiles, Dockerfile, and setup.sh without running anything
b2c setup openshell --dry-run

# Run a command in the sandbox
openshell sandbox exec -n b2c-<instance> -- b2c code list

重新运行命令以应用更改后的安全级别、Safety Mode 规则或编辑后的 .openshell/<sandbox>/policy.yaml(编辑后的策略会保留;--force 会重新生成策略);更改机密信息或配置后,或命令提示沙箱设置已更改时,使用 --recreate(重新创建会移除已上传的文件和已附加的 Agent 提供方)。使用 --allow-host 添加主机。沙箱中仅支持客户端凭据(不支持浏览器登录)。请参阅 Agent 沙箱指南(b2c docs read guide-agent-sandboxing)。

管理实例

列出已配置的实例
# Show all instances from dw.json
b2c setup instance list

# Output as JSON
b2c setup instance list --json
创建新实例
# Interactive mode - prompts for all values
b2c setup instance create staging

# With hostname
b2c setup instance create staging --hostname staging.example.com

# Create and set as active
b2c setup instance create staging --hostname staging.example.com --active

# Optionally save SCAPI coordinates and use SCAPI-first active-version detection
b2c setup instance create staging --hostname staging.example.com \
  --short-code kv7kzm78 --tenant-id zzxy_prd --api-backend auto

# Non-interactive mode (for scripts)
b2c setup instance create staging \
  --hostname staging.example.com \
  --username admin \
  --password <access-key> \
  --force

create 会在当前目录(或 --config / --project-directory 指定的目标目录中,或者在不存在本地 dw.json 时写入全局默认位置)写入 dw.json,并打印文件路径。从其他目录运行的命令无法读取该文件,除非传入 --config 或 --project-directory,或者使用 b2c setup default-config set <path> 注册该文件。若名称已存在,create 会失败;如需修改现有实例,请使用 b2c setup set <key> <value> --instance <name>。

shortCode 和 tenantId 为可选项。使用无状态 OAuth 且提供这两项时,设置流程会优先尝试通过 SCAPI 检测活动代码版本;否则,auto 会使用 OCAPI。如果检测失败,交互式设置会说明原因,并允许手动输入代码版本。

切换活动实例
# Set staging as the default instance
b2c setup instance set-active staging

# Now commands use staging by default
b2c code list  # Uses staging
移除实例
# Remove with confirmation prompt
b2c setup instance remove staging

# Remove without confirmation
b2c setup instance remove staging --force

了解输出

setup inspect 命令会按类别显示配置:

  • 实例:hostname、webdavHostname(如果已设置)、codeVersion
  • 身份验证(Basic):username、password(用于 WebDAV)
  • 身份验证(OAuth):clientId、clientSecret、scopes 和 authMethods(如果已设置)、accountManagerHost(如果已设置)
  • 身份验证(JWT Bearer):jwtCertPath、jwtKeyPath、jwtPassphrase(仅在已配置时显示)
  • 身份验证(SLAS):slasClientId、slasClientSecret(仅在已配置时显示)
  • TLS/mTLS:certificate、certificatePassphrase、selfSigned(仅在已配置时显示)
  • SCAPI:shortCode、tenantId
  • Commerce Intelligence(CIP):cipHost(仅在已配置时显示)
  • On-Demand Sandbox(ODS):sandboxApiHost、realm(仅在已配置时显示)
  • Managed Runtime(MRT):mrtProject、mrtEnvironment、mrtApiKey、mrtOrigin(如果已设置)
  • 项目:已配置的部署、内容和文档默认值
  • 元数据:siteId、instanceName 和 projectDirectory(仅在已配置时显示)
  • 安全:合并实例、全局文件和环境设置后的生效级别、基于级别的确认设置、来源列和规则数量(仅在已配置时显示)。SafetyFile 标识 Sources 中列出的全局文件;SafetyEnv 标识环境设置。使用 --verbose 可按匹配顺序查看带编号的规则及其来源,或使用 --json 查看完整的生效安全对象。即使禁用了级别确认,显式确认规则仍然适用。
  • 来源:已加载的所有配置来源列表

每个值都会在方括号中显示其来源:

  • [DwJsonSource] — 来自主 dw.json 文件的值
  • [default] — 来自共享默认 dw.json 的值(在 Sources 表格中显示为 DwJsonSource (default))
  • [EnvSource] — 来自 SFCC_* 环境变量的值
  • [MobifySource] — 来自 ~/.mobify 文件的值
  • [PackageJsonSource] — 来自 package.json 的 b2c 键的值
  • 插件提供的来源名称(例如,凭据插件)

配置优先级

值按以下优先级(从高到低)解析:

  1. CLI 标志和环境变量(先是 shell,然后是环境文件 SFCC_*/MRT_*)
  2. 插件来源(高优先级)
  3. dw.json 文件
  4. Storefront Next 变量(回退值)
  5. ~/.mobify 文件(仅 MRT API 密钥)
  6. 插件来源(低优先级)
  7. package.json 的 b2c 键

排查问题时,请检查来源列,了解哪些配置具有优先权。

package.json 中的项目默认值

将项目共享的非敏感默认值放在 b2c 键下。siteId 为接受已配置站点上下文的命令提供默认站点/渠道。对于内容命令,请设置 contentLibrary;如果它是站点的私有库,还要将相同的 ID 与 siteLibrary: true 一起列出:

{
  "b2c": {
    "siteId": "RefArch",
    "contentLibrary": "RefArch",
    "libraries": [{"id": "RefArch", "siteLibrary": true}]
  }
}

使用此配置时,b2c content list 和 b2c content export homepage 默认使用 RefArch 站点私有库,无需指定 --library 或 --site-library。CLI 标志、环境变量和 dw.json 的优先级仍然更高。请勿将凭据、密码、机密、主机名及其他特定于环境的连接数据放入 package.json。

故障排除

请始终先运行 b2c setup inspect——它会显示解析后的值及其来源。请保持启用掩码;编写脚本时使用 --json。如果某个值与预期不符,来源列会指出最终采用了哪个文件/环境变量/插件的值。

命令提示“credentials required”或“client-id is required”
  • CLI 未找到 clientId/clientSecret。运行 b2c setup inspect 并检查 OAuth 部分。
  • 检查所选配置路径和来源;默认会依次使用项目本地的 dw.json 和共享的全局默认配置,不会搜索父目录。
  • 确认已在_当前_ shell 中导出 SFCC_CLIENT_ID/SFCC_CLIENT_SECRET 环境变量,而不只是将它们定义在其他位置。
  • 凭据组是原子性的:如果 clientId 来自一个来源,而 clientSecret 来自优先级更低的来源,则较低优先级的密钥会被丢弃。请从同一来源提供两者,或使用优先级更高的覆盖值。
命令指向了错误的实例
  • b2c setup inspect 会显示解析后的主机名及其来源。
  • 对于包含多个实例的 dw.json,默认使用 active: true 的配置。可在每条命令中使用 -i <name> 覆盖,或通过 b2c setup instance set-active <name> 更改默认值。
  • SFCC_SERVER(或任何环境变量)的优先级高于 dw.json。如果希望采用 dw.json 中的值,请取消设置该环境变量。
  • 主机名不匹配保护:如果你传入的 --server(或 SFCC_SERVER)与 dw.json 中的主机名不同,CLI 会忽略 dw.json 中的所有其他值,以防止混用不同实例的凭据。请确保主机名一致,或明确传入完整凭据。
未读取 dw.json
  • 检查 b2c setup inspect 输出中的 Sources 区块——如果其中没有列出 DwJsonSource,说明未找到该文件。
  • CLI 使用所选的项目目录,不会搜索父目录。请从项目根目录运行,设置 SFCC_PROJECT_DIRECTORY,或传入 --config /path/to/dw.json。
  • 确保文件是有效的 JSON(解析错误会导致文件被静默跳过)。
  • 字段名称的大小写无关紧要——clientId 和 client-id 均可使用。请参阅上文“dw.json 键名大小写”。
SCAPI/OCAPI 调用出现 401/403 错误
  • 确认解析出的 clientId/clientSecret 属于_目标_实例(Account Manager 会按租户限定 API 客户端)。
  • 检查 OAuth 作用域:不同命令所需的作用域各不相同(例如 sfcc.cdn-zones、sfcc.orders)。请传入 --auth-scope 或设置 SFCC_OAUTH_SCOPES。
  • 对于 SCAPI 命令,请确认 tenantId 正确——租户 ID 使用下划线(zzxy_001),主机名使用连字符(zzxy-001)。CLI 会在两者之间进行规范化,但租户 ID 错误会导致 403 错误。
缺少 tenantId/shortCode
  • 这些值会从 dw.json、SFCC_TENANT_ID/SFCC_SHORTCODE 或 package.json 解析。运行 b2c setup inspect 查看它们来自哪个来源。
  • 对于沙盒,tenantId 会根据主机名推导(将 - 替换为 _):zzxy-001.dx... → zzxy_001。反向推导同样适用:如果有沙盒租户 ID 但没有主机名,则会推导出主机名。
MRT 命令提示“API key required”
  • 使用 MRT_API_KEY(或 SFCC_MRT_API_KEY)环境变量,或 ~/.mobify 文件({ "api_key": "..." })。
  • 使用 --cloud-origin <host> 时,CLI 会查找 ~/.mobify--<host>,而不是普通的 ~/.mobify。
setup inspect 中的敏感值掩码
  • 默认情况下,机密会显示为 admi...REDACTED。日常故障排查时请保持启用掩码。仅当用户明确要求查看机密值时,才使用 --unmask。
缺失值
  • 如果某个字段显示为 -,表示没有来源提供该值。请检查 dw.json 中的拼写、环境变量是否存在,以及插件输出。请记住:clientSecret、password 和 mrtApiKey 不能通过 package.json 设置——请使用 dw.json 或环境变量。
优先级错误的来源
  • 查看上文“CLI 如何发现配置”中的优先级列表。一个常见的意外情况是:环境变量(或 .env 文件)会覆盖 dw.json,而环境文件中的 SFCC_SERVER 如果主机名不同,则会完全跳过 dw.json 条目。Storefront Next 变量不会覆盖 dw.json。
仍未解决

比较以下两个输出:

b2c setup inspect --json > expected.json   # in a known-good shell
# ... run the failing command in the broken shell, then:
b2c setup inspect --json > actual.json
diff expected.json actual.json

差异通常会直接指出缺失或被覆盖的字段。

获取 Admin OAuth 令牌

使用 b2c auth token 获取 Account Manager 凭据的 Admin OAuth 访问令牌(用于 OCAPI 和 Admin API)。这适用于测试 API、编写脚本或 CI/CD 流水线。

# Get access token (outputs raw token to stdout)
b2c auth token

# Get token with browser-based auth
b2c auth token --user-auth

# Get token with specific scopes (accepts multiple: repeat --auth-scope or comma-separate)
b2c auth token --auth-scope sfcc.orders --auth-scope sfcc.products
b2c auth token --auth-scope "sfcc.orders,sfcc.products"

# Get token as JSON (includes expiration and scopes)
b2c auth token --json

# Use in curl for OCAPI calls
curl -H "Authorization: Bearer $(b2c auth token)" \
  "https://your-instance.dx.commercecloud.salesforce.com/s/-/dw/data/v24_1/sites"

该令牌使用配置(dw.json 或环境变量)中的 clientId 和 clientSecret 获取。如果未配置机密,或使用了 --user-auth,则需要在浏览器中使用你的账户登录。

**注意:**此命令返回用于 OCAPI/Admin API 的 admin 令牌。有关 shopper 令牌(SLAS),请参阅 b2c-slas 技能。

调用 SCAPI Admin API(系统或自定义 API)? 令牌必须包含租户范围 SALESFORCE_COMMERCE_API:<tenant_id> 以及 API 专属范围。b2c auth token 不会为你添加租户范围(不同于 b2c scapi custom status 等 SCAPI 子命令),因此请显式传入:

b2c auth token \
  --auth-scope "SALESFORCE_COMMERCE_API:zzpq_013" \
  --auth-scope sfcc.orders --auth-scope sfcc.products.rw

详情请参阅 b2c:b2c-scapi-admin 和 b2c:b2c-custom-api-development 技能。

更多命令

请参阅 b2c setup --help,了解其他设置命令,包括用于安装 AI Agent 技能的 b2c setup skills。

评论

支持 Markdown