百度小程序对接PHP需注意三点:JSON请求体需用php://input读取而非$_POST;文件上传须配置合法域名且用swan.uploadFile;swan.login的code换session_key必须HTTPS GET调用百度开放平台接口。
swan.request 默认发送的是 JSON 数据,PHP 需主动读取原始 body百度小程序调用 swan.request 时,若未显式设置 header['Content-Type'],默认会以 application/json 发送。此时 PHP 不会自动解析到 $_POST,必须用 file_get_contents('php://input') 手动读取原始请求体。
$_POST 会为空数组,这是最常见踩坑点header: {'Content-Type': 'application/x-www-form-urlencoded'},PHP 才会填充 $_POST
if ($_SERVER['CONTENT_TYPE'] === 'application/json') {
$raw = file_get_contents('php://input');
$data = json_decode($raw, true);
if (json_last_error() !== JSON_ERROR_NONE) {
http_response_code(400);
echo json_encode(['error' => 'Invalid JSON']);
exit;
}
} else {
$data = $_POST;
}
swan.getSystemInfo 中的 platform 和 version 字段做基础校验虽然百度未强制要求接口鉴权,但生产环境建议对请求来源做轻量识别,避免被恶意模拟。可从 swan.getSystemInfo 获取设备信息,随请求一起传入,PHP 端简单校验是否为合法的小程序平台。
swan.getSystemInfo({success: res => swan.request({data: {...res, ...myData}})})
$data['platform'] === 'swan',并可选校验 $data['version'] 是否符合最低支持版本userAgent 做判断,百度小程序 WebView 的 UA 可能被覆盖或不可靠swan.uploadFile,PHP 处理逻辑和普通表单一致,但路径需适配百度域名白名单百度小程序上传文件必须使用 swan.uploadFile,且目标 URL 必须在百度后台配置的「request 合法域名」和「uploadFile 合法域名」中,否则前端直接报错 fail abort 或 fail url not in domain list。
$_FILES 中,和普通 HTML 表单无异$_FILES['file']['error'] === UPLOAD_ERR_OK,再处理临时文件name="file[]"),一次只能传一个 filePath
$file = $_FILES['file'] ?? null;
if (!$file || $file['error'] !== UPLOAD_ERR_OK) {
http_response_code(400);
echo json_encode(['error' => 'Upload failed']);
exit;
}
$ext = pathinfo($file['name'], PATHINFO_EXTENSION);
$target = '/path/to/upload/' . uniqid() . '.' . strtolower($ext);
if (move_uploaded_file($file['tmp_name'], $target)) {
echo json_encode(['url' => 'https://yourdomain.com/' . basename($target)]);
}
swan.login code 换取 session_key 需
调用百度开放平台接口,PHP 必须用 https + GET 请求前端调用 swan.login 获取 code 后,需由 PHP 向百度开放平台发起请求换取用户凭证,地址是 https://openapi.baidu.com/rest/2.0/smartapp/user/login,参数必须用 GET 传,不能 POST。
code、grant_type=authorization_code、client_id(即百度小程序 AppKey)、client_secret
session_key 和 openid,可用于后续解密手机号等敏感数据
Content-Type: application/json,只认 query string$url = 'https://openapi.baidu.com/rest/2.0/smartapp/user/login?' . http_build_query([
'code' => $code,
'grant_type' => 'authorization_code',
'client_id' => 'your_app_key',
'client_secret' => 'your_app_secret'
]);
$response = file_get_contents($url);
$result = json_decode($response, true);
百度小程序对接 PHP 的关键不在“怎么写”,而在于清楚每个环节的数据流向和协议约束——尤其是 JSON 请求体不进 $_POST、文件上传域名白名单、登录换 token 必须 GET 这三点,漏掉任一都卡死在第一步。
# php
# html
# js
# 前端
# json
# app
# 小程序
# session
# 后端
# ai
# 百度
# 敏感数据
# String
# Error
# Token
# 接口
# input
# webview
# http
# https
# 开放平台
# 文件上传
# 不支持
# 表单
# 的是
# 这是
# 尤其是
# 才会
# 要用
# 可选
# 三点
相关文章:
如何快速登录WAP自助建站平台?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
再谈Python中的字符串与字符编码(推荐)
网站制作模板下载什么软件,ppt模板免费下载网站?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
如何选择香港主机高效搭建外贸独立站?
建站之星如何配置系统实现高效建站?
开心动漫网站制作软件下载,十分开心动画为何停播?
如何通过山东自助建站平台快速注册域名?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
微信推文制作网站有哪些,怎么做微信推文,急?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
如何用wdcp快速搭建高效网站?
如何在万网ECS上快速搭建专属网站?
制作表格网站有哪些,线上表格怎么弄?
如何通过IIS搭建网站并配置访问权限?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
建站之星微信建站一键生成小程序+多端营销系统
,石家庄四十八中学官网?
高防服务器租用如何选择配置与防御等级?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
网站代码制作软件有哪些,如何生成自己网站的代码?
孙琪峥织梦建站教程如何优化数据库安全?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
高防服务器租用首荐平台,企业级优惠套餐快速部署
网站制作难吗安全吗,做一个网站需要多久时间?
在线制作视频的网站有哪些,电脑如何制作视频短片?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
如何用5美元大硬盘VPS安全高效搭建个人网站?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
山东网站制作公司有哪些,山东大源集团官网?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
C++如何编写函数模板?(泛型编程入门)
自助网站制作软件,个人如何自助建网站?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
建站之星在线版空间:自助建站+智能模板一键生成方案
常州自助建站费用包含哪些项目?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
建站之星后台密码如何安全设置与找回?
制作网站的公司有哪些,做一个公司网站要多少钱?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。