PHP实现抖音小程序用户登录获取openid

 

目录

第一步、抖音小程序前端使用tt.login获取code

第二步、前端拿到code传给后端

第三步、方法1 后端获取用户信息

第四步、方法2  抖音小程序拿到用户信息把用户信息传给后端




code2Session抖音小程序用户登录后端文档

第一步、抖音小程序前端使用tt.login获取code

 前端 使用tt.login方法  force是否强制唤起窗口

请求示列子

login: function () {let that = this;tt.login({force: true,success(res) {const { code, errMsg, anonymousCode, isLogin } = res;console.log(`tt-login success`, errMsg);console.log(`code(临时登录凭证, 有效期 3 分钟) : `, code);console.log(`anonymousCode(用于标识当前设备, 无论登录与否都会返回, 有效期 3 分钟) : `, anonymousCode);console.log(`isLogin(判断在当前 APP(头条、抖音等)是否处于登录状态) : `, isLogin);that.setData({hasLogin: true});tt.showToast({title: "登录成功"})},fail(err) {tt.showModal({title: '登录失败',content: JSON.stringify(err),showCancel: false});console.log(`tt-login failed`, err.errMsg);},complete(res) {console.log(`tt-login completed`);}});}

第二步、前端拿到code传给后端

php通过code获取openid

<?php// 初始化CURL
$ch = curl_init();// 设置CURL选项
$url = "https://minigame.zijieapi.com/mgplatform/api/apps/jscode2session";
$params = array('appid' => 'tt**********5','secret' => '988**************92','code' => '1********3'
);// 将参数附加到URL
$url .= '?' . http_build_query($params);curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将返回结果直接输出而不是直接输出
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); // 设置请求方法
curl_setopt($ch, CURLOPT_HTTPHEADER, array("content-type: application/json"
));// 执行请求并获取响应
$response = curl_exec($ch);// 检查是否有错误发生
if(curl_errno($ch)){echo 'Curl error: ' . curl_error($ch);
}// 关闭CURL资源
curl_close($ch);// 输出响应
echo $response;?>

这里有个问题只是获取到openid没有具体用户信息,需要通过前端获取传给后端

记得保存session_key到后端,不能返回给前端

{"error": 0,"session_key": "ffaaed37bb05d096***","openid": "36d4bd3c8****","anonymous_openid": "","unionid": "f7510d9ab***********"
}

第三步、方法1 后端获取用户信息

获取用户公开信息_移动/网站应用_抖音开放平台

<?php$url = 'https://open.douyin.com/oauth/userinfo/';$data = ['open_id' => 'ba253642-0590-40bc-9bdf-9a1334******','access_token' => 'act.1d1021d2aee3d41fee2d2add43456badMFZnrhFhfWotu3Ecuiuka2******',
];$ch = curl_init($url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded',
]);$response = curl_exec($ch);if ($response === false) {echo 'Curl error: ' . curl_error($ch);
} else {echo $response;
}curl_close($ch);

返回参数

{"data": {"avatar": "https://example.com/x.jpeg","avatar_larger": "https://example.com/x.jpeg","client_key": "ExampleClientKey","e_account_role": "","error_code": 0,"log_id": "202212011600080101351682282501F9E7","nickname": "TestAccount","open_id": "0da22181-d833-447f-995f-1beefe******","union_id": "1ad4e099-4a0c-47d1-a410-bffb4f******"},"message": "success"
}

 

第四步、方法2  抖音小程序拿到用户信息把用户信息传给后端

tt.getUserInfo_抖音开放平台用户信息

tt.login({success(_res) {console.log("登录成功");// 调用 getUserInfo 前, 请确保登录成功// 获取用户信息tt.getUserInfo({// withCredentials: true,// withRealNameAuthenticationInfo: true,success(res) {console.log(`getUserInfo 调用成功`, res.userInfo);},fail(res) {console.log(`getUserInfo 调用失败`, res.errMsg);},});},
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/22810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“Apache Kylin 实战指南:从安装到高级优化的全面教程

Apache Kylin是一个开源的分布式分析引擎,它提供了在Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力,支持超大规模数据的亚秒级查询。以下是Kylin的入门教程,帮助您快速上手并使用这个强大的工具。 1. 安装Kylin Apache Kylin的安装是一个关键步骤,它要求您具备一…

linux--------线程的同步和互斥

前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、线程互斥 &#xff08;1&#xff09;互斥&#xff1a; 任何时刻&#xff0c;互斥保证有且只有一个执行流进入临界区&#xff0c;访问临界资源&#xff0c;通常对临界资源起保护作用 要了解互…

XStream反序列化

XStream反序列化 前言基础重要组件MarshallingStrategy编码策略两个重要类 MapperConverterDynamicProxyConverter XStream编组/解组具体过程测试代码fromXML解组toXML编组总结 XStream漏洞漏洞原理sorted-set触发环境和版本限制复现调试分析总结各种版本<1.3.11.4-1.4.41.4…

SD6210A 低噪声可调电荷泵DC/DC转换器芯片IC

一般描述 该SD6210A是一种低噪声&#xff0c;恒定频率(1.20MHz)开关电容电压倍增器。它产生一个调节输出电压从2.8V到5V的输入与高达250mA的输出电流。低外部零件数(一个飞行电容器和两个小旁路电容的VIN和VOUT)使SD6210A非常适合小型&#xff0c;电池供电的应用新的电荷…

Java面试题:解决Redis缓存击穿问题

缓存击穿 当一个key过期时,需要对这个key进行数据重建 在重建的时间内如果有大量的并发请求进入,就会绕过缓存进入数据库,会瞬间击垮DB 重建时间可能因为数据是多个表的混合结果需要分头统计而延长,从而更容易出现缓存击穿问题 缓存击穿的解决方案 添加互斥锁 先查询缓存…

Excel 每 N 行拼成一行

F列每四行对应一条记录&#xff1a; ABCDEF1NameAddressCityShort IDCompany 122222 al street3Blue cheese415Company 261111 arm rd7Ranch829Company 3103333 raindrop drive11Peanut123 需要把F列整理成规范表格&#xff0c;按行写入A-D&#xff1a; ABCDEF1NameAddressC…

Coolmuster iOS 数据擦除:隐私保护的终极方案

手机和平板电脑是我们不可或缺的伙伴&#xff0c;它们存储着我们的照片、联系人、私人消息以及工作文件。然而&#xff0c;当这些设备需要更换或者出售时&#xff0c;如何确保存储在其中的数据不被他人恢复和滥用&#xff0c;成为了一个严峻的问题。Coolmuster iOS 数据擦除&am…

Java(十)——内部类

文章目录 内部类静态内部类实例内部类匿名内部类局部内部类 内部类 Java内部类是一种特殊的类定义方式&#xff0c;它允许在一个类的内部定义另一个类。 内部类可以访问其所在外部类的成员变量和成员方法&#xff0c;这使得它非常适用于封装与外部类紧密相关的私有逻辑。 内…

地理加权回归GWR简介

地理加权回归GWR简介 一、定义&#xff1a; 地理加权回归&#xff08;Geographically Weighted Regression&#xff0c;简称GWR&#xff09;是一种空间数据分析方法&#xff0c;专门用于处理空间异质性&#xff08;spatial heterogeneity&#xff09;问题。以下是对GWR的详细简…

MOE原理解释及从零实现一个MOE(专家混合模型)

什么是混合模型&#xff08;MOE&#xff09; 一个MOE主要由两个关键点组成&#xff1a; 一是将传统Transformer中的FFN&#xff08;前馈网络层&#xff09;替换为多个稀疏的专家层&#xff08;Sparse MoE layers&#xff09;。每个专家本身是一个独立的神经网络&#xff0c;实…

[论文笔记]Mistral 7B

引言 今天带来大名鼎鼎的Mistral 7B的论文笔记。 作者推出了Mistral 7B&#xff0c;这是一个70亿参数的语言模型。Mistral 7B在所有评估基准中表现优于最佳的13B开源模型&#xff08;Llama 2&#xff09;&#xff0c;并且在推理、数学和代码生成方面胜过最佳发布的34B模型(Ll…

odoo qweb template小结

QWeb QWeb是一个基于XML的模板引擎,可用于生成HTML片段和页面。它使用XML格式来定义模板。QWeb通过在模板中添加特定的标记,来指示模板中的数据和逻辑部分。使用QWeb,你可以创建各种不同的模板,例如列表视图,表单视图和报告等。QWeb支持标准的HTML标记和控制结构,如if语…

D435相机结合Yolo V8识别出目标物体,并转点云出抓取位姿。

最近项目上需要完成整个识别、定位、到最后的抓取流程。 分享一下&#xff0c;通过使用D435相机并结合Yolo V8识别出目标物体后&#xff0c;抠取出目标物体部分的有效深度图&#xff0c;最后将前景物体部分的RGB D435相机结合Yolo V8识别出目标物体&#xff0c;并转点云出抓取位…

从高海拔到严寒季的测量作业更要「快准稳」,怎么实现?

西藏那曲海拔4500米公路勘测项目赶工期 “必须要保障在西藏那曲地区承接的公路勘测项目赶工期需求&#xff0c;海拔高达4500米、网络通讯不足、部分范围存在无网以及地基信号覆盖可能不足的情况&#xff0c;需要能满足环境和项目需求的专业RTK设备紧急送到。” 客户的一个电话…

做外贸是否需要代运营?

相信很多做外贸的小伙伴或者公司都有这样的一个困扰&#xff0c;尤其是做SEO以及平台的公司&#xff0c;会很纠结要不要将公司的运营承包出去。 而之所以有这样的困扰&#xff0c;一部分是公司的业务员可能并不擅长运营&#xff0c;或者是业务员抽不出时间去管理运营这块。 而…

映射网络驱动器自动断开的解决方法

如果将驱动器映射到网络共享&#xff0c;映射的驱动器可能会在定期处于非活动状态后断开连接&#xff0c;并且 Windows 资源管理器可能会在映射驱动器的图标上显示红色 X。&#xff0c;出现此行为的原因是&#xff0c;系统可以在指定的超时期限后断开空闲连接&#xff0c; (默认…

PWA缓存策略区别NetworkOnly/CacheFirst/CacheOnly/NetworkFirst/StaleWhileRevalidate

现在来看看 Workbox 提供的缓存策略&#xff0c;主要有这几种&#xff1a; cache-first, cache-only, network-first, network-only, stale-while-revalidate 在前面看到&#xff0c;实例化的时候会给 workbox 挂载一个 Strategies 的实例。提供上面一系列的缓存策略&…

半导体制造中的压缩气体及其高压扩散器如何选择 北京中邦兴业

了解高压扩散器 高压扩散器&#xff08;HPD&#xff09;对于保持压缩气体样品中颗粒计数的精度至关重要。它们充当颗粒计数器和压缩气体管线之间的纽带&#xff0c;在气体进入颗粒计数器的样品入口时使其扩散。这确保了压力得到控制&#xff0c;以防止对颗粒计数器样品室的敏感…

uniapp学习(001 前期介绍)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第1p-第p10的内容 简介 目录结构 效果 打包成小程序 配置开发者工具 打开安全按钮 使用uniapp的内置组件…

3DMAX一键虚线图形插件DashedShape使用方法

3DMAX一键虚线图形插件使用方法 3dMax一键虚线图形插件&#xff0c;允许从场景中拾取的样条线创建虚线形状。该工具使你能够创建完全自定义的填充图案&#xff0c;为线段设置不同的材质ID&#xff0c;并在视口中进行方便的预览。 【版本要求】 3dMax 2012 – 2025&#xff08;…