# TikTok 红人博主库云函数 本文档定义了用于红人博主库模块的 TikTok 数据采集云函数。 ## API 配置 - **Base URL**: `https://api.tikhub.io/api/v1` - **API Key**: `tKIbAsEM8X+GmE2vHqGW7D/ICwK1Q5V4viKFrWiPB6HholGdLFqZJmmyNw==` ## 云函数列表 ### 1. 搜索用户 (tiktok_searchUsers) 用于在红人库首页搜索 TikTok 用户。 ```javascript async function handler(request, response) { console.log('🚀 执行 TikTok 用户搜索...'); const API_KEY = 'tKIbAsEM8X+GmE2vHqGW7D/ICwK1Q5V4viKFrWiPB6HholGdLFqZJmmyNw=='; const BASE_URL = 'https://api.tikhub.io/api/v1'; try { // 1. 获取参数 let keyword = request.params?.keyword || request.body?.keyword; let cursor = request.params?.cursor || request.body?.cursor || 0; if (!keyword) { response.json({ code: 400, success: false, error: '缺少关键词参数 (keyword)' }); return; } // 2. 调用 TikHub API const url = `${BASE_URL}/tiktok/web/fetch_search_user?keyword=${encodeURIComponent(keyword)}&cursor=${cursor}`; // 注意:这里假设云函数环境支持 fetch,如果不支持需使用 axios 或其他库 const apiRes = await fetch(url, { method: 'GET', headers: { 'Authorization': `Bearer ${API_KEY}`, // 假设 API Key 放在 Header,或者根据 TikHub 文档放在 query param // 根据文档 URL 示例,TikHub 似乎通常不需要复杂的 Auth Header,或者 Key 就在 URL 中? // 实际上通常商业 API 需要 Header。如果 TikHub 是开放 API,可能直接调用。 // *根据任务描述的 API Key,通常用于 Authorization 头或 X-Api-Key 头* // 这里假设作为 Bearer Token 或 X-Api-Key 'X-Api-Key': API_KEY } }); const data = await apiRes.json(); // 3. 处理返回结果 // 假设 TikHub 返回结构包含 user_list response.json({ code: 200, success: true, data: data }); } catch (error) { console.error('❌ 搜索失败:', error.message); response.json({ code: 500, success: false, error: error.message }); } } ``` ### 2. 获取用户详情 (tiktok_getUserProfile) 获取指定用户的详细信息(包括 sec_uid)。 ```javascript async function handler(request, response) { console.log('🚀 获取 TikTok 用户详情...'); const API_KEY = 'tKIbAsEM8X+GmE2vHqGW7D/ICwK1Q5V4viKFrWiPB6HholGdLFqZJmmyNw=='; const BASE_URL = 'https://api.tikhub.io/api/v1'; try { let uniqueId = request.params?.unique_id || request.body?.unique_id; if (!uniqueId) { response.json({ code: 400, success: false, error: '缺少 unique_id 参数' }); return; } const url = `${BASE_URL}/tiktok/web/fetch_user_profile?unique_id=${uniqueId}`; const apiRes = await fetch(url, { headers: { 'X-Api-Key': API_KEY } }); const data = await apiRes.json(); response.json({ code: 200, success: true, data: data }); } catch (error) { console.error('❌ 获取详情失败:', error.message); response.json({ code: 500, success: false, error: error.message }); } } ``` ### 3. 获取用户作品列表 (tiktok_getUserPosts) 获取用户的视频作品列表。 ```javascript async function handler(request, response) { console.log('🚀 获取 TikTok 用户作品...'); const API_KEY = 'tKIbAsEM8X+GmE2vHqGW7D/ICwK1Q5V4viKFrWiPB6HholGdLFqZJmmyNw=='; const BASE_URL = 'https://api.tikhub.io/api/v1'; try { let secUid = request.params?.sec_user_id || request.body?.sec_user_id; let count = request.params?.count || request.body?.count || 20; let cursor = request.params?.cursor || request.body?.cursor || 0; if (!secUid) { response.json({ code: 400, success: false, error: '缺少 sec_user_id 参数' }); return; } const url = `${BASE_URL}/tiktok/web/fetch_user_posts?sec_user_id=${secUid}&count=${count}&cursor=${cursor}`; const apiRes = await fetch(url, { headers: { 'X-Api-Key': API_KEY } }); const data = await apiRes.json(); response.json({ code: 200, success: true, data: data }); } catch (error) { console.error('❌ 获取作品失败:', error.message); response.json({ code: 500, success: false, error: error.message }); } } ``` ### 4. 获取视频评论 (tiktok_getPostComments) 获取视频的评论列表。 ```javascript async function handler(request, response) { console.log('🚀 获取 TikTok 视频评论...'); const API_KEY = 'tKIbAsEM8X+GmE2vHqGW7D/ICwK1Q5V4viKFrWiPB6HholGdLFqZJmmyNw=='; const BASE_URL = 'https://api.tikhub.io/api/v1'; try { let videoId = request.params?.video_id || request.body?.video_id; let count = request.params?.count || request.body?.count || 50; let cursor = request.params?.cursor || request.body?.cursor || 0; if (!videoId) { response.json({ code: 400, success: false, error: '缺少 video_id 参数' }); return; } const url = `${BASE_URL}/tiktok/web/fetch_post_comment?aweme_id=${videoId}&count=${count}&cursor=${cursor}`; const apiRes = await fetch(url, { headers: { 'X-Api-Key': API_KEY } }); const data = await apiRes.json(); response.json({ code: 200, success: true, data: data }); } catch (error) { console.error('❌ 获取评论失败:', error.message); response.json({ code: 500, success: false, error: error.message }); } } ``` ## 部署说明 请将以上代码部署为对应的云函数,并记录 Function ID。 | 函数名 | 建议 Function ID | 描述 | | :--- | :--- | :--- | | tiktok_searchUsers | `tiktok_search` | 搜索用户 | | tiktok_getUserProfile | `tiktok_profile` | 获取用户详情 | | tiktok_getUserPosts | `tiktok_posts` | 获取用户作品 | | tiktok_getPostComments | `tiktok_comments` | 获取作品评论 |