跳转到内容

创建你的第一个 flag

接下来的几分钟里,你会创建一个 FortressFlag 账户,切换一个真实的 flag,并在你的应用将来会读取的那个 API 响应里看到这次变更落地。暂时不需要安装 SDK——只在最后用到一个终端。

前往控制台的注册页面,创建你的组织。你会起一个名字,设置邮箱和密码,并接受服务协议——一个复选框,覆盖紧挨着它链接出来的那一组文件。

整个表单就这么多。你的试用立即开始,包含 1,000 台月活设备,而且不会因为时间到期——按你自己的节奏评估。

你登录进来时已经是这个组织的 Owner,并且已经有东西可看:一个 Example 项目,两个环境——dev 和 production——以及三个状态很真实的布尔 flag:

  • new-checkout——在所有环境都关闭,等待它的灰度发布
  • dark-mode——在 dev 开启,在 production 关闭
  • beta-banner——两边都开启

这是你的沙盒。本页剩下的所有操作都发生在 dev 环境里,你可以在那里随意改动任何东西。

打开 Example 项目,找到 new-checkout,在 dev 里把它打开。这是一次真实的变更:对每一台读取这个环境的设备来说它已经生效,它进了你的审计日志,而且你马上就会从 API 里看到它。

(在 production 里试一下同样的操作,你会发现控制台对它的处理不一样——生产类别的环境会有更醒目的样式和更严格的规则。那是角色与安全在起作用。)

要像应用那样读取 flag,你需要一个客户端密钥。在 Example 项目里打开 SDK 密钥,为 dev 环境签发一个。

完整的密钥——以 ffc_dev_ 开头——只在此刻显示一次。把它复制下来。离开这个界面之后,列表里只会显示足够辨认它的部分。(弄丢了?再签发一个,然后吊销第一个——密钥很便宜,吊销是即时生效的。)

向客户端 API 请求这台设备的 flag——每个 SDK 发出的都是同一个请求。把你刚复制的密钥放进一个变量,然后:

Terminal window
export FF_SDK_KEY="(你刚签发的那个 ffc_dev_ 密钥)"
curl -s "https://edge.fortressflag.com/v1/client/flags?environment=dev" \
-H "Authorization: Bearer $FF_SDK_KEY" \
-H "X-FF-Device: dev_8KqW3nR2vT7yLp0aZxQmBg" \
| jq -r .payload | tr '_-' '/+' | base64 -d | jq

(响应把数据包在一个编码过的 payload 里——最后三个管道阶段负责解开它。X-FF-Device 头携带一个设备标识;SDK 会自己签发,而对于终端里的实验,任何格式正确的值都可以。)

你拿回来的正是 dev 里的设备会拿到的东西:

{
"v": 1,
"tenant": "…你的组织 id…",
"environment": "dev",
"device": "dev_8KqW3nR2vT7yLp0aZxQmBg",
"issuedAt": "2026-08-23T15:00:00Z",
"expiresAt": "2026-08-23T15:30:00Z",
"flags": {
"new-checkout": true,
"dark-mode": true,
"beta-banner": true
}
}

看到 new-checkout: true 了——那是你的切换,已经被提供出去。在控制台里把它关回去,再跑一次 curl,看它跟着变。就是这样——你已经完成了第一次 flag 变更,并从数据平面读到了它。

  • 把它放进应用:iOS、Android、Web 或 Go 快速入门——每一篇都只用几行代码读取一个 flag。
  • Flag 与类型——精确地说,你刚才切换的是什么。
  • 邀请你的团队——flag 有人作伴更好。