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

2024-06-06 18:04

本文主要是介绍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);},});},
});

这篇关于PHP实现抖音小程序用户登录获取openid的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036830

相关文章

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依