BetaFlow API 文档
完整的 RESTful API 文档,帮助您快速集成 BetaFlow 到您的项目中。管理 Beta 测试项目、申请者、Beta 代码和租户信息。
API 概述
基础信息
- 基础URL:
https://your-domain.com/api - 内容类型:
application/json - 认证方式: Bearer Token (API Key)
- 响应格式: JSON
响应格式
成功响应:
{
"success": true,
"data": {}
}错误响应:
{
"success": false,
"error": "错误描述"
}快速开始
1
获取集成信息在开始集成之前,您需要从 BetaFlow 管理后台获取以下信息:
- 项目ID (Campaign ID): 您要集成的 Beta 测试项目ID
- API密钥 (API Key): 用于服务端API调用的密钥
2
CDN 集成(推荐)最简单的集成方式,只需要在您的 HTML 页面中添加以下代码。我们提供国内外双 CDN 加速:
🇨🇳 国内用户(阿里云 CDN)
<!-- 国内用户推荐使用阿里云 CDN,访问速度更快 -->
<script
src="https://fuli-img.oss-cn-beijing.aliyuncs.com/sdk/latest/betaflow.min.js"
data-campaign-id="YOUR_CAMPAIGN_ID"
data-auto-init="true">
</script>🌍 海外用户(GitHub Pages CDN)
<!-- 海外用户推荐使用 GitHub Pages CDN -->
<script
src="https://saudm.github.io/betaflow-sdk/sdk/latest/betaflow.min.js"
data-campaign-id="YOUR_CAMPAIGN_ID"
data-auto-init="true">
</script>完整示例
<!DOCTYPE html>
<html>
<head>
<title>我的产品 - Beta 测试</title>
</head>
<body>
<!-- 您的页面内容 -->
<!-- BetaFlow SDK - 自动选择最优 CDN -->
<script>
// 根据用户地理位置自动选择 CDN
const isChina = /cn|china/i.test(navigator.language) ||
Intl.DateTimeFormat().resolvedOptions().timeZone.includes('Asia/Shanghai');
const cdnUrl = isChina
? 'https://fuli-img.oss-cn-beijing.aliyuncs.com/sdk/latest/betaflow.min.js'
: 'https://saudm.github.io/betaflow-sdk/sdk/latest/betaflow.min.js';
const script = document.createElement('script');
script.src = cdnUrl;
script.setAttribute('data-campaign-id', 'YOUR_CAMPAIGN_ID');
script.setAttribute('data-auto-init', 'true');
document.head.appendChild(script);
</script>
</body>
</html>💡 CDN 选择建议
- • 国内用户:使用阿里云 CDN,访问速度更快,稳定性更好
- • 海外用户:使用 GitHub Pages CDN,全球加速网络
- • 自动选择:使用上面的完整示例代码,自动根据用户地理位置选择最优 CDN
- • 版本锁定:将
latest替换为具体版本号(如v1.0.0)以锁定版本
3
NPM 安装如果您使用现代前端框架,可以通过 NPM 安装:
npm install betaflow-sdk
import BetaFlow from 'betaflow-sdk';
// 初始化 SDK
const betaflow = new BetaFlow({
campaignId: 'YOUR_CAMPAIGN_ID',
apiEndpoint: 'https://your-domain.com/api'
});
// 显示申请表单
betaflow.showApplicationForm();4
SDK 使用示例🛠️ 基础用法
// 初始化后显示悬浮按钮
betaflow.showFloatingButton({
position: 'bottom-right',
color: '#3b82f6',
tooltip: '申请测试资格'
});
// 显示申请表单
betaflow.showApplicationForm({
title: '加入Beta测试',
fields: ['name', 'email', 'deviceInfo']
});👤 用户状态验证
// 验证用户测试资格
const result = await betaflow.verifyUser({
email: 'user@example.com'
});
// 返回结果示例
console.log(result);
/*
{
"isApproved": true,
"betaStage": "public",
"accessToken": "xxxxx",
"expiresAt": "2024-03-15T00:00:00Z"
}
*/🎚️ 事件监听
// 表单提交成功监听
betaflow.on('application-submitted', (data) => {
console.log('申请已提交:', data);
alert('申请提交成功!');
});
// 按钮点击监听
betaflow.on('button-clicked', () => {
console.log('悬浮按钮被点击');
});💡 最佳实践
- • 在页面加载完成后初始化 SDK
- • 使用 try-catch 处理初始化异常
- • 添加加载状态提示提升用户体验
- • 定期检查 SDK 版本更新
API 端点
认证认证与验证 API
GET
/api/auth/user获取当前登录用户的详细信息
认证要求:
需要在请求头中包含有效的API Key
Authorization: Bearer YOUR_API_KEY
响应示例:
{
"user": {
"id": "user_123",
"email": "user@example.com",
"name": "用户名",
"tenantId": "tenant_123",
"role": "ADMIN"
}
}项目项目管理 API
GET
/api/campaigns获取项目列表
认证要求:
需要在请求头中包含有效的API Key
Authorization: Bearer YOUR_API_KEY
响应示例:
{
"success": true,
"data": [
{
"id": "campaign_123",
"name": "产品 Beta 测试",
"description": "新产品的 Beta 测试项目",
"status": "ACTIVE",
"approvalMode": "MANUAL",
"formFields": [],
"createdAt": "2024-01-01T00:00:00Z"
}
]
}申请申请管理 API
POST
/api/applications提交新的公测申请
认证要求:
需要在请求头中包含有效的API Key
Authorization: Bearer YOUR_API_KEY
请求体:
{
"campaignId": "campaign_123",
"applicantName": "张三",
"applicantEmail": "zhangsan@example.com",
"formData": {
"company": "ABC公司",
"role": "产品经理",
"experience": "5年以上"
}
}GET
/api/applications/verify验证用户申请状态(需要API Key认证)
认证要求:
需要在请求头中包含有效的API Key
Authorization: Bearer YOUR_API_KEY
查询参数:
campaignId(string, 必需): 项目IDemail(string, 可选): 用户邮箱phone(string, 可选): 用户手机号
注意:email 和 phone 至少提供一个
响应示例(用户已通过审核):
{
"success": true,
"data": {
"hasApplied": true,
"status": "APPROVED",
"applicationId": "app_123",
"submittedAt": "2024-01-01T10:00:00Z",
"userIdentifier": "user@example.com"
}
}响应示例(用户未申请):
{
"success": true,
"data": {
"hasApplied": false,
"status": null,
"applicationId": null,
"submittedAt": null,
"userIdentifier": null
}
}错误码说明:
MISSING_CAMPAIGN_ID: 缺少项目IDMISSING_USER_IDENTIFIER: 缺少用户标识(邮箱或手机号)CAMPAIGN_NOT_FOUND: 项目不存在
代码示例
用户状态验证
使用新的验证API检查用户申请状态
// 使用新的验证API检查用户申请状态(需要API Key认证)
// 使用SDK验证用户申请状态
async function verifyUserApplicationStatus(email) {
try {
const result = await betaflow.verifyUserApplication({
email: email
});
if (result.success) {
if (result.status === 'APPROVED') {
console.log('用户已通过审核,可以访问Beta功能');
return { approved: true, applicationData: result.applicationData };
} else if (result.status === 'PENDING') {
console.log('用户申请待审核');
return { approved: false, pending: true };
} else if (result.status === 'REJECTED') {
console.log('用户申请被拒绝');
return { approved: false, rejected: true };
} else {
console.log('用户尚未申请');
return { approved: false, notApplied: true };
}
}
return { error: true, message: result.message };
} catch (error) {
console.error('验证申请状态失败:', error);
return { error: true, message: error.message };
}
}
// 使用示例
verifyUserApplicationStatus('user@example.com').then(result => {
if (result.approved) {
// 显示Beta功能
showBetaFeatures();
} else if (result.pending) {
// 显示等待审核提示
showPendingMessage();
} else if (result.notApplied) {
// 显示申请入口
showApplicationForm();
}
});SDK 用户验证示例
使用 BetaFlow SDK 进行用户验证
// 使用 BetaFlow SDK 进行用户验证(需要API Key认证)
import BetaFlow from '@betaflow/sdk';
// 初始化 SDK
const betaflow = new BetaFlow({
campaignId: 'YOUR_CAMPAIGN_ID',
apiKey: 'YOUR_API_KEY', // 服务端API密钥
apiEndpoint: 'https://your-domain.com/api'
});
// 验证用户申请状态
async function checkUserAccess(userEmail) {
try {
const result = await betaflow.verifyUser({
email: userEmail
});
console.log('验证结果:', result);
if (result.hasApplied && result.status === 'APPROVED') {
// 用户已通过审核
enableBetaFeatures();
showWelcomeMessage('欢迎使用Beta版本!');
} else if (result.hasApplied && result.status === 'PENDING') {
// 申请待审核
showMessage('您的申请正在审核中,请耐心等待。');
} else if (result.hasApplied && result.status === 'REJECTED') {
// 申请被拒绝
showMessage('很抱歉,您的申请未通过审核。');
} else {
// 用户未申请
showApplicationButton();
}
} catch (error) {
console.error('验证失败:', error);
showErrorMessage('验证失败,请稍后重试。');
}
}
// 页面加载时检查用户状态
window.addEventListener('load', () => {
const userEmail = getCurrentUserEmail(); // 获取当前用户邮箱
if (userEmail) {
checkUserAccess(userEmail);
}
});React 集成示例
在 React 应用中集成 BetaFlow
import React from 'react';
import { BetaFlowProvider, BetaFlowButton } from '@betaflow/react-sdk';
function App() {
return (
<BetaFlowProvider
campaignId="YOUR_CAMPAIGN_ID"
apiKey="YOUR_API_KEY"
>
<div className="app">
<h1>我的产品</h1>
<p>欢迎体验我们的新产品!</p>
{/* 浮动按钮 */}
<BetaFlowButton />
</div>
</BetaFlowProvider>
);
}自定义申请表单
使用自定义UI提交申请
const betaflow = new BetaFlow({
campaignId: 'YOUR_CAMPAIGN_ID',
apiKey: 'YOUR_API_KEY',
autoShow: false // 不显示浮动按钮,仅使用API功能
});
document.getElementById('custom-form').addEventListener('submit', async (e) => {
e.preventDefault();
const formData = new FormData(e.target);
const applicationData = {
applicantName: formData.get('name'),
applicantEmail: formData.get('email'),
formData: {
company: formData.get('company'),
reason: formData.get('reason')
}
};
try {
const result = await betaflow.submitApplication(applicationData);
alert('申请提交成功!');
} catch (error) {
alert('申请提交失败:' + error.message);
}
});