auth-tool-cloudbase by tencentcloudbase/skills
npx skills add https://github.com/tencentcloudbase/skills --skill auth-tool-cloudbaseauth-web 之前激活此技能。auth-web。../auth-web/SKILL.md../auth-wechat/SKILL.md../http-api/SKILL.md广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
配置 CloudBase 认证提供商:匿名、用户名/密码、短信、邮箱、微信、Google 等。
前提条件:CloudBase 环境 ID (env)
使用官方的 login-config API。不要使用 lowcode/DescribeLoginStrategy 或 lowcode/ModifyLoginStrategy 作为默认路径。
查询当前登录配置:
{
"params": { "EnvId": `env` },
"service": "tcb",
"action": "DescribeLoginConfig"
}
响应包含以下字段:
AnonymousLoginUserNameLoginPhoneNumberLoginEmailLoginSmsVerificationConfigMfaConfigPwdUpdateStrategy下游 Web 认证代码的参数映射:
PhoneNumberLogin 控制 auth-web 中 auth.signInWithOtp({ phone }) 和 auth.signUp({ phone }) 使用的手机 OTP 流程。EmailLogin 控制 auth-web 中 auth.signInWithOtp({ email }) 和 auth.signUp({ email }) 使用的邮箱 OTP 流程。UserNameLogin 控制 auth-web 中 auth.signInWithPassword({ username, password }) 使用的密码登录流程。SmsVerificationConfig.Type = "apis" 需要同时提供 Name 和 Method。EnvId 始终是 CloudBase 环境 ID,不是可发布密钥。在调用 ModifyLoginConfig 之前,仅从可写键重建有效载荷。不要将完整的响应对象直接展开到请求中。
const WritableLoginConfig = {
"PhoneNumberLogin": LoginConfig.PhoneNumberLogin,
"EmailLogin": LoginConfig.EmailLogin,
"UserNameLogin": LoginConfig.UserNameLogin,
"AnonymousLogin": LoginConfig.AnonymousLogin,
...(LoginConfig.SmsVerificationConfig ? { "SmsVerificationConfig": LoginConfig.SmsVerificationConfig } : {}),
...(LoginConfig.MfaConfig ? { "MfaConfig": LoginConfig.MfaConfig } : {}),
...(LoginConfig.PwdUpdateStrategy ? { "PwdUpdateStrategy": LoginConfig.PwdUpdateStrategy } : {})
}
LoginConfig(见场景 1)LoginConfig.AnonymousLogin = true(开启)或 false(关闭){
"params": { "EnvId": `env`, ...WritableLoginConfig, "AnonymousLogin": true },
"service": "tcb",
"action": "ModifyLoginConfig"
}
LoginConfig(见场景 1)LoginConfig.UserNameLogin = true(开启)或 false(关闭){
"params": { "EnvId": `env`, ...WritableLoginConfig, "UserNameLogin": true },
"service": "tcb",
"action": "ModifyLoginConfig"
}
LoginConfig(见场景 1)LoginConfig.PhoneNumberLogin = trueLoginConfig.PhoneNumberLogin = falseLoginConfig.SmsVerificationConfig = {
Type: 'default', // 'default' 或 'apis'
Name: 'method_53978f9f96a35', // 当 Type = 'apis' 时必需
Method: 'SendVerificationCode',
SmsDayLimit: 30 // -1 = 无限制
}
{
"params": {
"EnvId": `env`,
...WritableLoginConfig,
"PhoneNumberLogin": true,
"SmsVerificationConfig": {
"Type": "default",
"SmsDayLimit": 30
}
},
"service": "tcb",
"action": "ModifyLoginConfig"
}
使用自定义 apis 发送短信:
{
"params": {
"EnvId": `env`,
...WritableLoginConfig,
"PhoneNumberLogin": true,
"SmsVerificationConfig": {
"Type": "apis",
"Name": "method_53978f9f96a35",
"Method": "SendVerificationCode",
"SmsDayLimit": 20
}
},
"service": "tcb",
"action": "ModifyLoginConfig"
}
邮箱有两层配置:
ModifyLoginConfig.EmailLogin:控制邮箱/密码登录是否启用ModifyProvider(Id="email"):控制邮箱发送渠道和 SMTP 配置auth.signInWithOtp({ email }) 和 auth.signUp({ email })开启邮箱/密码登录:
{
"params": { "EnvId": `env`, ...WritableLoginConfig, "EmailLogin": true },
"service": "tcb",
"action": "ModifyLoginConfig"
}
关闭邮箱/密码登录:
{
"params": { "EnvId": `env`, ...WritableLoginConfig, "EmailLogin": false },
"service": "tcb",
"action": "ModifyLoginConfig"
}
配置邮箱提供商(腾讯云邮箱):
{
"params": {
"EnvId": `env`,
"Id": "email",
"On": "TRUE",
"EmailConfig": { "On": "TRUE", "SmtpConfig": {} }
},
"service": "tcb",
"action": "ModifyProvider"
}
禁用邮箱提供商:
{
"params": { "EnvId": `env`, "Id": "email", "On": "FALSE" },
"service": "tcb",
"action": "ModifyProvider"
}
配置邮箱提供商(自定义 SMTP):
{
"params": {
"EnvId": `env`,
"Id": "email",
"On": "TRUE",
"EmailConfig": {
"On": "FALSE",
"SmtpConfig": {
"AccountPassword": "password",
"AccountUsername": "username",
"SecurityMode": "SSL",
"SenderAddress": "sender@example.com",
"ServerHost": "smtp.qq.com",
"ServerPort": 465
}
}
},
"service": "tcb",
"action": "ModifyProvider"
}
{
"params": { "EnvId": `env` },
"service": "tcb",
"action": "GetProviders"
}
筛选 Id == "wx_open",保存为 WeChatProvider。
从 微信开放平台 获取凭据:
AppIDAppSecret更新:
{
"params": {
"EnvId": `env`,
"Id": "wx_open",
"On": "TRUE", // "FALSE" 表示禁用
"Config": {
...WeChatProvider.Config,
ClientId: `AppID`,
ClientSecret: `AppSecret`
}
},
"service": "tcb",
"action": "ModifyProvider"
}
{
"params": { "EnvId": `env` },
"service": "lowcode",
"action": "DescribeStaticDomain"
}
将 result.Data.StaticDomain 保存为 staticDomain。
在 Google Cloud Console 配置:
https://{staticDomain}/__auth/Client ID 和 Client Secret启用:
{
"params": {
"EnvId": `env`,
"ProviderType": "OAUTH",
"Id": "google",
"On": "TRUE", // "FALSE" 表示禁用
"Name": { "Message": "Google" },
"Description": { "Message": "" },
"Config": {
"ClientId": `Client ID`,
"ClientSecret": `Client Secret`,
"Scope": "email openid profile",
"AuthorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth",
"TokenEndpoint": "https://oauth2.googleapis.com/token",
"UserinfoEndpoint": "https://www.googleapis.com/oauth2/v3/userinfo",
"TokenEndpointAuthMethod": "CLIENT_SECRET_BASIC",
"RequestParametersMap": {
"RegisterUserSyncScope": "syncEveryLogin",
"IsGoogle": "TRUE"
}
},
"Picture": "https://qcloudimg.tencent-cloud.cn/raw/f9131c00dcbcbccd5899a449d68da3ba.png",
"TransparentMode": "FALSE",
"ReuseUserId": "TRUE",
"AutoSignUpWithProviderUser": "TRUE"
},
"service": "tcb",
"action": "ModifyProvider"
}
使用客户端 API 处理客户端元数据和令牌/会话设置。不要将其用作登录策略或提供商管理的替代品。
查询客户端配置:
{
"params": { "EnvId": `env`, "Id": `env` },
"service": "tcb",
"action": "DescribeClient"
}
更新客户端配置:
{
"params": {
"EnvId": `env`,
"Id": `env`,
"AccessTokenExpiresIn": 7200,
"RefreshTokenExpiresIn": 2592000,
"MaxDevice": 3
},
"service": "tcb",
"action": "ModifyClient"
}
查询现有密钥:
{
"params": { "EnvId": `env`, "KeyType": "publish_key", "PageNumber": 1, "PageSize": 10 },
"service": "lowcode",
"action": "DescribeApiKeyTokens"
}
如果存在则返回 PublishableKey.ApiKey(按 Name == "publish_key" 筛选)。
创建新密钥(如果不存在):
{
"params": { "EnvId": `env`, "KeyType": "publish_key", "KeyName": "publish_key" },
"service": "lowcode",
"action": "CreateApiKeyToken"
}
如果创建失败,请引导用户访问:"https://tcb.cloud.tencent.com/dev?envId=env#/env/apikey"
每周安装量
542
代码仓库
GitHub Stars
38
首次出现
2026年1月22日
安全审计
安装于
opencode475
codex474
gemini-cli465
github-copilot452
kimi-cli444
amp442
auth-web.auth-web after this skill and before writing frontend code.../auth-web/SKILL.md../auth-wechat/SKILL.md../http-api/SKILL.mdConfigure CloudBase authentication providers: Anonymous, Username/Password, SMS, Email, WeChat, Google, and more.
Prerequisites : CloudBase environment ID (env)
Use the official login-config API. Do not use lowcode/DescribeLoginStrategy or lowcode/ModifyLoginStrategy as the default path.
Query current login configuration:
{
"params": { "EnvId": `env` },
"service": "tcb",
"action": "DescribeLoginConfig"
}
The response contains fields such as:
AnonymousLoginUserNameLoginPhoneNumberLoginEmailLoginSmsVerificationConfigMfaConfigPwdUpdateStrategyParameter mapping for downstream Web auth code:
PhoneNumberLogin controls phone OTP flows used by auth-web auth.signInWithOtp({ phone }) and auth.signUp({ phone })EmailLogin controls email OTP flows used by auth-web auth.signInWithOtp({ email }) and auth.signUp({ email })UserNameLogin controls password login flows used by auth-web auth.signInWithPassword({ username, password })Before calling ModifyLoginConfig, rebuild the payload from writable keys only. Do not spread the full response object back into the request.
const WritableLoginConfig = {
"PhoneNumberLogin": LoginConfig.PhoneNumberLogin,
"EmailLogin": LoginConfig.EmailLogin,
"UserNameLogin": LoginConfig.UserNameLogin,
"AnonymousLogin": LoginConfig.AnonymousLogin,
...(LoginConfig.SmsVerificationConfig ? { "SmsVerificationConfig": LoginConfig.SmsVerificationConfig } : {}),
...(LoginConfig.MfaConfig ? { "MfaConfig": LoginConfig.MfaConfig } : {}),
...(LoginConfig.PwdUpdateStrategy ? { "PwdUpdateStrategy": LoginConfig.PwdUpdateStrategy } : {})
}
LoginConfig (see Scenario 1)LoginConfig.AnonymousLogin = true (on) or false (off){
"params": { "EnvId": `env`, ...WritableLoginConfig, "AnonymousLogin": true },
"service": "tcb",
"action": "ModifyLoginConfig"
}
LoginConfig (see Scenario 1)LoginConfig.UserNameLogin = true (on) or false (off){
"params": { "EnvId": `env`, ...WritableLoginConfig, "UserNameLogin": true },
"service": "tcb",
"action": "ModifyLoginConfig"
}
Get LoginConfig (see Scenario 1)
Modify:
Turn on : LoginConfig.PhoneNumberLogin = true
Turn off : LoginConfig.PhoneNumberLogin = false
Config (optional):
LoginConfig.SmsVerificationConfig = {
Type: 'default', // 'default' or 'apis'
Name: 'method_53978f9f96a35', // required when Type = 'apis'
Method: 'SendVerificationCode',
SmsDayLimit: 30 // -1 = unlimited
}
Update:
{
"params": {
"EnvId": `env`,
...WritableLoginConfig,
"PhoneNumberLogin": true,
"SmsVerificationConfig": {
"Type": "default",
"SmsDayLimit": 30
}
},
"service": "tcb",
"action": "ModifyLoginConfig"
}
Use custom apis to send SMS :
{
"params": {
"EnvId": `env`,
...WritableLoginConfig,
"PhoneNumberLogin": true,
"SmsVerificationConfig": {
"Type": "apis",
"Name": "method_53978f9f96a35",
"Method": "SendVerificationCode",
"SmsDayLimit": 20
}
},
"service": "tcb",
"action": "ModifyLoginConfig"
}
Email has two layers of configuration:
ModifyLoginConfig.EmailLogin: controls whether email/password login is enabledModifyProvider(Id="email"): controls the email sender channel and SMTP configurationauth.signInWithOtp({ email }) and auth.signUp({ email })Turn on email/password login :
{
"params": { "EnvId": `env`, ...WritableLoginConfig, "EmailLogin": true },
"service": "tcb",
"action": "ModifyLoginConfig"
}
Turn off email/password login :
{
"params": { "EnvId": `env`, ...WritableLoginConfig, "EmailLogin": false },
"service": "tcb",
"action": "ModifyLoginConfig"
}
Configure email provider (Tencent Cloud email) :
{
"params": {
"EnvId": `env`,
"Id": "email",
"On": "TRUE",
"EmailConfig": { "On": "TRUE", "SmtpConfig": {} }
},
"service": "tcb",
"action": "ModifyProvider"
}
Disable email provider :
{
"params": { "EnvId": `env`, "Id": "email", "On": "FALSE" },
"service": "tcb",
"action": "ModifyProvider"
}
Configure email provider (custom SMTP) :
{
"params": {
"EnvId": `env`,
"Id": "email",
"On": "TRUE",
"EmailConfig": {
"On": "FALSE",
"SmtpConfig": {
"AccountPassword": "password",
"AccountUsername": "username",
"SecurityMode": "SSL",
"SenderAddress": "sender@example.com",
"ServerHost": "smtp.qq.com",
"ServerPort": 465
}
}
},
"service": "tcb",
"action": "ModifyProvider"
}
{
"params": { "EnvId": `env` },
"service": "tcb",
"action": "GetProviders"
}
Filter by Id == "wx_open", save as WeChatProvider.
Get credentials from WeChat Open Platform:
AppIDAppSecretUpdate:
{
"params": {
"EnvId": `env`,
"Id": "wx_open",
"On": "TRUE", // "FALSE" to disable
"Config": {
...WeChatProvider.Config,
ClientId: `AppID`,
ClientSecret: `AppSecret`
}
},
"service": "tcb",
"action": "ModifyProvider"
}
{
"params": { "EnvId": `env` },
"service": "lowcode",
"action": "DescribeStaticDomain"
}
Save result.Data.StaticDomain as staticDomain.
Configure at Google Cloud Console:
https://{staticDomain}/__auth/Client ID and Client SecretEnable:
{
"params": {
"EnvId": `env`,
"ProviderType": "OAUTH",
"Id": "google",
"On": "TRUE", // "FALSE" to disable
"Name": { "Message": "Google" },
"Description": { "Message": "" },
"Config": {
"ClientId": `Client ID`,
"ClientSecret": `Client Secret`,
"Scope": "email openid profile",
"AuthorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth",
"TokenEndpoint": "https://oauth2.googleapis.com/token",
"UserinfoEndpoint": "https://www.googleapis.com/oauth2/v3/userinfo",
"TokenEndpointAuthMethod": "CLIENT_SECRET_BASIC",
"RequestParametersMap": {
"RegisterUserSyncScope": "syncEveryLogin",
"IsGoogle": "TRUE"
}
},
"Picture": "https://qcloudimg.tencent-cloud.cn/raw/f9131c00dcbcbccd5899a449d68da3ba.png",
"TransparentMode": "FALSE",
"ReuseUserId": "TRUE",
"AutoSignUpWithProviderUser": "TRUE"
},
"service": "tcb",
"action": "ModifyProvider"
}
Use client APIs for client metadata and token/session settings. Do not use them as a replacement for login strategy or provider management.
Query client config :
{
"params": { "EnvId": `env`, "Id": `env` },
"service": "tcb",
"action": "DescribeClient"
}
Update client config :
{
"params": {
"EnvId": `env`,
"Id": `env`,
"AccessTokenExpiresIn": 7200,
"RefreshTokenExpiresIn": 2592000,
"MaxDevice": 3
},
"service": "tcb",
"action": "ModifyClient"
}
Query existing key :
{
"params": { "EnvId": `env`, "KeyType": "publish_key", "PageNumber": 1, "PageSize": 10 },
"service": "lowcode",
"action": "DescribeApiKeyTokens"
}
Return PublishableKey.ApiKey if exists (filter by Name == "publish_key").
Create new key (if not exists):
{
"params": { "EnvId": `env`, "KeyType": "publish_key", "KeyName": "publish_key" },
"service": "lowcode",
"action": "CreateApiKeyToken"
}
If creation fails, direct user to: "https://tcb.cloud.tencent.com/dev?envId=env#/env/apikey"
Weekly Installs
542
Repository
GitHub Stars
38
First Seen
Jan 22, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykFail
Installed on
opencode475
codex474
gemini-cli465
github-copilot452
kimi-cli444
amp442
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
103,800 周安装
FlowStudio MCP 构建部署 Power Automate 云流指南 | 自动化流程开发
530 周安装
mcp2cli:无需代码,将MCP/OpenAPI/GraphQL实时转换为命令行工具
530 周安装
交互式作品集设计指南:30秒吸引招聘者,提升作品集转化率与个人品牌
530 周安装
每日销售简报AI工具 - 自动生成优先级行动计划,整合日历、CRM和邮件数据
531 周安装
生产排程实战指南:离散制造工厂的有限产能排程、换线优化与瓶颈管理
531 周安装
Angular 21 最佳实践指南:TypeScript、Signals、组件与性能优化
531 周安装
SmsVerificationConfig.Type = "apis" requires both Name and MethodEnvId is always the CloudBase environment ID, not the publishable key