关于 b2c-config
b2c-config 是用于检查和排查 Salesforce B2C Commerce CLI 与 MCP 服务配置的技能,说明配置来源、优先级、身份验证及项目上下文,并区分 CLI 与 MCP 的操作方式。
主要功能
- 01检查解析后的配置
- 02说明配置来源优先级
- 03介绍 Storefront Next 回退值
- 04说明身份验证方式
- 05厘清 MCP 项目上下文
适用场景
- 01排查意外或缺失的配置值
- 02选择合适的配置文件和实例
- 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。配置来源或排查意外值/缺失值时,请阅读此处的相关部分。
| 任务 | CLI | MCP | 偏好/差异 | 回退方案 |
|---|---|---|---|---|
| 检查解析后的配置 | b2c setup inspect | config_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 会从环境或配置文件中读取这些值。
来源及其解析顺序(优先级从高到低):
- CLI 标志和环境变量——显式值始终优先。Shell 变量优先于环境文件;项目
.env文件中的工具包变量(SFCC_*、MRT_*)(或通过--dotenv-file/SFCC_DOTENV_FILE选择的文件)其次。 - 插件来源(高优先级)——自定义配置插件(例如,机密管理器)。
dw.json——通过--config/SFCC_CONFIG、环境文件、项目本地文件或共享的全局dw.json选择。支持单个实例,或使用active: true/-i <name>选择configs[]数组中的实例。- Storefront Next 变量——仅用于补充所选
dw.json条目中缺失的字段(见下文)。 ~/.mobify——主目录中的文件(仅含 MRT API 密钥)。- 插件来源(低优先级)。
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__clientId | slasClientId | SFCC_SLAS_CLIENT_ID |
PUBLIC__app__commerce__api__organizationId | tenantId | SFCC_TENANT_ID |
PUBLIC__app__commerce__api__shortCode | shortCode | SFCC_SHORTCODE |
COMMERCE_API_SLAS_SECRET | slasClientSecret | SFCC_SLAS_CLIENT_SECRET |
PUBLIC__app__defaultSiteId | siteId | SFCC_SITE_ID |
MRT_PROJECT | mrtProject | MRT_PROJECT |
MRT_TARGET | mrtEnvironment | MRT_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 服务都会:
- 从
projectDirectory解析.env。 - 应用该文件中的所有受支持的 B2C/MRT 环境变量。
- 按以下顺序选择
dw.json格式的配置文件:每次调用指定的configPath;启动参数--config/SFCC_CONFIG;项目.env中的SFCC_CONFIG;${projectDirectory}/dw.json;共享全局默认配置。指定显式路径时,不使用共享全局默认配置。项目.env中的 Storefront Next 变量仅用于填补dw.json中缺少的值。 - 从
projectDirectory解析每次调用指定的相对configPath和项目.env中的SFCC_CONFIG值。 - 如果提供了
instanceName,则先从主文件中选择,再从共享全局dw.json中选择,且不会更改任一文件。 - 继续使用常规工具配置来源,包括已注册的插件来源、MRT 凭据和
package.json。 - 如果
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键的值- 插件提供的来源名称(例如,凭据插件)
配置优先级
值按以下优先级(从高到低)解析:
- CLI 标志和环境变量(先是 shell,然后是环境文件
SFCC_*/MRT_*) - 插件来源(高优先级)
- dw.json 文件
- Storefront Next 变量(回退值)
- ~/.mobify 文件(仅 MRT API 密钥)
- 插件来源(低优先级)
- 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。