php怎么调用字节健康平台_php如何接入心理测评与健康干预

浅晨同学_4300

浅晨同学_4300

2026-04-04

318人浏览

原创

字节健康平台php接入前必须确认三件事:一是完成企业资质认证并获取client_id与client_secret;二是access_token需本地缓存且自动刷新;三是心理测评回调地址必须https、公网可达并返回200。

php怎么调用字节健康平台_php如何接入心理测评与健康干预

字节健康平台 PHP 接入前必须确认的三件事

字节健康平台(现属抖音集团医疗健康生态)不提供官方 PHP SDK,所有对接都基于其开放 API(HTTP + JSON),需自行实现签名、请求、回调验证等逻辑。别找 bytehealth_sdk 或 composer require byte/health——不存在。

  • 必须在「字节健康开放平台」后台完成企业资质认证、创建应用、获取 client_id 和 client_secret
  • 所有敏感操作(如拉取心理测评报告、触发干预任务)依赖 access_token,它由 /oauth2/token 接口颁发,有效期 2 小时,需本地缓存并自动刷新
  • 心理测评结果回调地址(callback_url)必须是 HTTPS、可公网访问、能正确响应 200,否则平台会停止推送

PHP 实现 OAuth2 授权码模式调用 /oauth2/token

用户授权后,字节会跳转回你的 redirect_uri 并附带 code 参数。PHP 后端需用该 code 换取 access_token:

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => 'https://open.bytehealth.com/oauth2/token',
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query([
        'grant_type' => 'authorization_code',
        'client_id' => 'your_client_id',
        'client_secret' => 'your_client_secret',
        'code' => $_GET['code'],
        'redirect_uri' => 'https://yourdomain.com/callback.php'
    ]),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded']
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
<p>// 成功时 $response 包含 'access_token', 'refresh_token', 'expires_in'
// 失败时会有 'error' 和 'error_description' 字段</p>

注意:

  • redirect_uri 必须与后台配置完全一致(包括末尾斜杠)
  • client_secret 绝对不能硬编码在前端或日志中
  • 如果返回 invalid_grant,大概率是 code 已被使用过或超时(10 分钟失效)

调用心理测评报告接口 /v1/assessment/report 的关键校验点

该接口需携带 access_token,且必须用 POST + JSON Body 发送,不是 GET 查询参数:

$opts = [
    'http' => [
        'method' => 'POST',
        'header' => "Authorization: Bearer {$access_token}\r\nContent-Type: application/json\r\n",
        'content' => json_encode(['user_id' => 'u_123456789'])
    ]
];
$context = stream_context_create($opts);
$result = file_get_contents('https://open.bytehealth.com/v1/assessment/report', false, $context);
$data = json_decode($result, true);

常见失败原因:

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载
  • 返回 401 Unauthorized:token 过期或格式错误(检查是否漏了 Bearer 前缀)
  • 返回 403 Forbidden:应用未开通心理测评权限,或 user_id 不在该应用授权范围内
  • 返回 400 Bad Request:JSON 格式非法,或 user_id 长度/字符不符合平台要求(通常为字母+数字,长度 8–32)

处理健康干预回调时如何防重放和伪造

字节健康平台在触发干预动作(如发送问卷、启动音频引导)后,会向你配置的 callback_url 发起 POST 请求,携带以下关键字段:

  • event_type(如 intervention_started)
  • data(加密 payload,需用 AES-128-CBC 解密)
  • timestamp(毫秒时间戳)
  • nonce(随机字符串)
  • signature(HMAC-SHA256 签名,密钥为 client_secret)

PHP 验证步骤:

  • 检查 timestamp 是否在当前时间 ±5 分钟内,防止重放攻击
  • 拼接 timestamp + nonce + raw_body,用 hash_hmac('sha256', $msg, $client_secret) 计算签名,与 header 中 X-Bytehealth-Signature 对比
  • 解密 data 前,务必先 base64_decode,再用 openssl_decrypt(IV 从 header 或 payload 中提取)

漏掉任意一步,都可能让恶意请求伪装成平台回调。

字节健康平台的接口设计偏企业级,没有“一键接入”路径。最易被忽略的是:token 刷新逻辑没做持久化(导致凌晨批量请求失败)、回调验签时没校验 timestamp、AES 解密 IV 混淆了填充方式(平台用 PKCS#7,不是 ZeroPadding)。这些细节不写进代码注释,上线后基本靠日志盲猜。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

10344

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

6081

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2115

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3828

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4534

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3551

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

5077

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3982

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11922

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习