如果你发现百家号刷新时仍然使用浏览器而不是 API,请按以下步骤排查:
检查 server/src/services/HeadlessBrowserService.ts 文件中的 fetchAccountInfo 方法:
async fetchAccountInfo(platform: PlatformType, cookies: CookieData[]): Promise<AccountInfo> {
logger.info(`[fetchAccountInfo] Starting for platform: ${platform}`);
// 百家号使用直接 API 获取账号信息和作品列表
if (platform === 'baijiahao') {
logger.info(`[fetchAccountInfo] Using direct API for baijiahao`);
return this.fetchBaijiahaoAccountInfoDirectApi(cookies);
}
// ...
}
关键点:
if (platform === 'baijiahao') 判断fetchBaijiahaoAccountInfoDirectApiTypeScript 代码需要编译后才能生效:
# 进入 server 目录
cd server
# 重新编译
npm run build
# 或者使用开发模式(自动编译)
npm run dev
确保服务已重启:
# 停止服务
# Ctrl+C 或关闭终端
# 重新启动
npm run dev
刷新百家号账号时,应该看到以下日志:
[fetchAccountInfo] Starting for platform: baijiahao
[fetchAccountInfo] Using direct API for baijiahao
[Baijiahao API] Fetching account info via direct API...
[Baijiahao API] Step 1: Fetching appinfo...
[Baijiahao API] appinfo response: errno=0, errmsg=success
[Baijiahao API] Got account info: name=xxx, id=bjh_xxx
[Baijiahao API] Step 2: Fetching growth info...
[Baijiahao API] Got fans count: 1234
[Baijiahao API] Step 3: Fetching works list...
[Baijiahao API] Successfully fetched account info
如果没有看到这些日志:
使用测试脚本验证 API 是否可用:
# 在 server 目录下运行
node test-baijiahao-api.js
注意:需要先修改脚本中的 Cookie 为真实的 Cookie。
确认账号的 platform 字段是 baijiahao:
-- 在数据库中查询
SELECT id, accountName, platform FROM platform_accounts WHERE platform = 'baijiahao';
如果 platform 不是 baijiahao:
确认 Cookie 数据格式正确:
// Cookie 应该是 JSON 数组格式
[
{
"name": "BDUSS",
"value": "xxx",
"domain": ".baidu.com",
"path": "/"
},
{
"name": "STOKEN",
"value": "xxx",
"domain": ".baidu.com",
"path": "/"
}
]
[fetchAccountInfo]原因:代码没有编译或服务没有重启
解决:
npm run build[Playwright] 而不是 [Baijiahao API]原因:没有进入百家号的特殊处理分支
解决:
baijiahao原因:Cookie 无效或已过期
解决:重新登录账号
原因:可能有缓存
解决:
server/dist 目录npm run build如果仍然有问题,可以临时修改代码强制使用 API:
async fetchAccountInfo(platform: PlatformType, cookies: CookieData[]): Promise<AccountInfo> {
// 强制所有平台都使用百家号 API(仅用于调试)
logger.info(`[DEBUG] Force using baijiahao API for ${platform}`);
return this.fetchBaijiahaoAccountInfoDirectApi(cookies);
}
注意:这只是临时调试方法,不要用于生产环境。
if (platform === 'baijiahao'))npm run build)baijiahao[Baijiahao API]如果以上步骤都完成了,刷新功能应该会使用 API 接口。
如果仍然有问题,可以增加日志级别:
// 在 fetchAccountInfo 开头添加
console.log('=== DEBUG fetchAccountInfo ===');
console.log('platform:', platform);
console.log('platform === "baijiahao":', platform === 'baijiahao');
console.log('typeof platform:', typeof platform);
console.log('cookies count:', cookies.length);
console.log('==============================');
这样可以看到更详细的调试信息。