CLI身份验证

CLI

身份验证

通过浏览器或个人 API 密钥登录,并了解当同一台机器上两者都已设置时,究竟哪一个会优先生效,从而避免弄混和出错。

CLI 有两种登录方式:通过浏览器,或使用个人 API 密钥。在自己的电脑上用浏览器最简单;密钥更适合 CI 和服务器。

通过浏览器登录

auth:login 会在浏览器中打开 Sofia。你批准访问后,CLI 在本地地址(http://127.0.0.1:<port>/callback)接收授权。这是带 PKCE 的 OAuth2 授权码流程,无需复制密钥。

sofia auth:login
  • --scopes "<s1 s2>":要申请的权限范围。默认是所有资源权限加上 offline_access。
  • --no-browser:只打印地址而不打开,适用于没有浏览器的机器。
sofia auth:login --scopes "posts:read posts:write offline_access"
sofia auth:login --no-browser

凭据的保存位置

auth:login 之后,CLI 会把会话保存在 ~/.sofia/credentials.json(目录权限 0700,文件权限 0600)。过期的令牌会自动刷新,文件随之重写。

{
  "apiUrl": "https://api.sofia-post.com",
  "clientId": "…",
  "accessToken": "…",
  "refreshToken": "…",
  "expiresAt": "…",
  "scope": "…"
}

检查与退出登录

auth:status 显示 CLI 当前代表的账号。auth:logout 会删除凭据文件。

sofia auth:status
sofia auth:logout

auth:logout 只会删除这台机器上的凭据:Sofia API 没有撤销端点,因此在你于 Sofia 的 设置 › 已连接的应用 中撤销之前,该访问权限仍然有效。

使用个人 API 密钥

在 Sofia 的 设置 › API › 个人访问 中创建密钥,然后导出为 SOFIA_API_KEY。无需 auth:login,适合 CI 和服务器。关于密钥的更多内容见身份验证。

export SOFIA_API_KEY="sk_live_…"
sofia establishments:list

优先级

浏览器登录得到的凭据优先于 SOFIA_API_KEY。如果要在已登录的机器上使用密钥,请先运行 sofia auth:logout。

环境变量

变量默认值作用
SOFIA_API_KEY—个人 API 密钥(设置 › API › 个人访问)。
SOFIA_API_URLhttps://api.sofia-post.com另一个 API 实例(预发布、本地)。
SOFIA_CLIENT_ID“Sofia CLI”客户端auth:login 使用的另一个公开 OAuth 客户端。

准备好发布了吗?前往帖子。

这个页面对你有帮助吗?