BetaFlow API 文档

完整的 RESTful API 文档,帮助您快速集成 BetaFlow 到您的项目中。管理 Beta 测试项目、申请者、Beta 代码和租户信息。

快速开始

了解如何快速集成 BetaFlow SDK

查看集成指南
API 端点

查看所有可用的 API 端点

浏览 API
示例代码

查看实际的代码示例

查看示例

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, 必需): 项目ID
  • email (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: 缺少项目ID
  • MISSING_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);
  }
});

需要帮助?

如果您在集成过程中遇到问题,请查看我们的详细文档或联系技术支持。