npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

lark-tenant-key-cli

v0.1.1

Published

Unofficial minimal-permission CLI that retrieves the current Lark or Feishu tenant_key using the official lark-cli OAuth flow.

Readme

lark-tenant-key-cli

English

一个非官方、最小权限的命令行工具,用于获取当前授权飞书/Lark 用户所在企业的 tenant_key。应用配置、OAuth、Token 保存与刷新、OpenAPI 请求全部委托给官方 @larksuite/cli

本项目与 Lark Technologies 无隶属或背书关系。Lark、飞书及相关标识归其各自权利人所有。

快速开始

需要 Node.js 22 或更高版本。

安装时(或首次执行时)还会下载官方预编译的 lark-cli 二进制文件,因此机器需要能访问 GitHub Releases 或已配置的 npm 二进制镜像。

飞书首次运行用一条命令完成 lark-cli 配置、用户授权和 tenant_key 获取:

npx --yes lark-tenant-key-cli --setup --brand feishu

国际版 Lark 使用:

npx --yes lark-tenant-key-cli --setup --brand lark

--setup 会通过官方 CLI 创建开放平台应用,执行人需要有创建/管理开发者应用的权限。客户没有 权限时,请让其应用管理员执行首次配置,或提供已经配置好的 lark-cli profile。

后续运行会复用 lark-cli 保存在本机的 profile 与 Token:

npx --yes lark-tenant-key-cli

经常使用时可全局安装:

npm install --global lark-tenant-key-cli
lark-tenant-key --setup --brand feishu

直接在终端运行时,结果会带上醒目前缀:

您当前飞书应用的 tenant key 是: tenant_key_example

通过管道或命令替换捕获输出时,前缀会自动省略,只返回原始 tenant_key,因此脚本仍可安全使用:

export LARK_TENANT_KEY="$(lark-tenant-key)"

进度、浏览器授权提示和错误全部写入标准错误。

工作原理

  1. 优先复用已有 lark-cli 用户登录态。

  2. 缺少授权或 Token 失效时执行:

    lark-cli auth login --scope offline_access
  3. 通过 lark-cli 调用只读用户信息接口:

    lark-cli api GET /open-apis/authen/v1/user_info \
      --as user \
      --jq '.data.tenant_key'

飞书用户信息接口 本身不要求业务权限,并在 data.tenant_key 返回当前企业标识。但官方 lark-cli 的 device flow 固定附加 offline_access,因此纯 lark-cli 方案的最小授权就是它。本包不会申请 通讯录、消息、文档、日历等权限。

根据应用和租户设置,应用管理员可能需要先开通“持续访问已授权的数据”、开启刷新 user_access_token 的安全设置并发布应用配置。

用户授权是累积的。本次最小授权不会撤销同一用户此前授予该应用的其他权限;严格隔离时应使用 独立应用/profile,或先在飞书/Lark 授权管理页撤销旧授权。

参数

--setup            先配置 lark-cli,再授权并获取 tenant_key
--brand <brand>    与 --setup 一起使用:feishu 或 lark
--force-login      重新授权,适合切换飞书/Lark 账号
--profile <name>   使用指定的 lark-cli profile
--json             输出 {"tenant_key":"..."}
-v, --version      输出本包版本
-h, --help         显示帮助

示例:

lark-tenant-key --json
lark-tenant-key --profile work
lark-tenant-key --force-login

安全与隐私

  • Access Token、Refresh Token 和 App Secret 由 lark-cli 管理,本包不会打印这些内容。
  • 登录过程中,lark-cli 可能接收并在本机保存身份信息和 OAuth Token;调用用户信息接口时,本 包装器只接收经过 lark-cli 过滤后的 tenant_key
  • 本包装器没有自建后端,也不会自行发送遥测。
  • 官方 lark-cli 文档说明其默认会发送有限的操作系统/设备风控信号,详见其 安全说明
  • stdout 专用于最终 tenant_key
  • 意外响应中的控制字符和不可见 Unicode 格式字符会在输出前被拒绝。
  • tenant_key 是组织标识而不是访问凭证,但真实客户标识仍应作为受控配置,不要提交到公开仓库。
  • 子进程始终使用参数数组调用,不经过 shell 拼接。

数据流说明见 PRIVACY.md,安全问题请按 SECURITY.md 私下报告。

常见问题

lark-cli 尚未配置

运行:

lark-tenant-key --setup --brand feishu
# 国际版 Lark:lark-tenant-key --setup --brand lark

这会启动官方 lark-cli 配置流程,过程中可能要求在浏览器确认应用配置。

提示没有开通 offline_access

在当前 lark-cli profile 对应的应用后台开通“持续访问已授权的数据”。部分环境还要求安全评估或 发布新版本;没有应用管理权限时请联系管理员。

不要改用 --recommend--domain all 绕过,这些选项会申请本工具并不需要的更多权限。

得到的企业不是预期企业

tenant_key 属于实际完成浏览器授权的账号所在企业。请检查浏览器账号,再使用 --force-login 或 独立的 --profile

Lark 与飞书是否都支持

创建 profile 时选择 --brand lark--brand feishu。后续运行使用 profile 已保存的 brand, 本包不硬编码服务域名。

官方二进制下载失败

先尝试:

npm install --global @larksuite/cli --registry=https://registry.npmjs.org/
lark-cli --version

仍失败时,请放通官方 GitHub Release 下载地址,或按安装器提示配置企业二进制镜像/代理。不要通过 关闭 TLS 证书校验来绕过问题。若企业 macOS 策略强制要求所有二进制完成 notarization,还需要 申请例外或等待上游提供已 notarize 的 lark-cli 版本。

本地开发

npm ci
npm run check
npm test
npm run test:dependency
npm run pack:check

测试使用假的 lark-cli 进程,不会发起真实 OAuth,也不会访问飞书/Lark。

贡献与发布方式见 CONTRIBUTING.mdRELEASING.md

许可证

MIT