PHP —— 用 ThinkPHP5.0 实现微信小程序登陆
《工欲善其事,必先利其器》
大家好,之前学习了 原生 PHP 和框架,今天我们运用框架 TP5.0 来实现一下微信小程序的用户登陆以及获取用户的信息接口。
一、创建 Wxuser 模型
一般 MVC 框架的数据操作,都是在 Model 层里面的,所以这里我们需要实现微信登陆的模型,代码如下,分为几个小功能点:
- 使用前端发来的 code 去换取 openid;
- 利用 openid 生成 token;
- 将 openid 和 token 以及用户信息入库。
<?php
namespace app\api\model; // 命名空间,根据自己的项目路径来生成
use think\Model; // 引入tp框架的Model类
use app\common\exception\BaseException; // 引入基础错误捕捉类
use think\Db; // 引入 tp 框架的Db类
use think\Cache; // 引入 tp 框架的缓存类
class Wxuser extends Model {
private $appId;
private $appSecret;
public $error;
public $token;
protected $resultSetType = "collection"; // 设置返回类型
protected $autoWriteTimestamp = true; // 自动记录时间戳
/**
* Wxuser constructor
* @param $appId
* @param $appSecret
*/
public function __construct() {
$appKey = Db::name("appkey")->find(); // 查找管理后台入库的小程序信息
$this->appId = $appKey["appId"];
$this->appSecret = $appKey["appSecret"];
}
/**
* 获取用户信息
* @param $token
* @return null|static
* @throws \think\exception\DbException
*/
public static function getUser($token) {
$open_id = Cache::get($token)['openid'];
$userInfo = DB::name("wxuser")->where("open_id",$open_id)->find();
if ($userInfo) {
$userInfo["create_time"] = date('Y-m-d',$userInfo["create_time"]);
$userInfo["update_time"] = date('Y-m-d',$userInfo["update_time"]);
}
return $userInfo;
}
/**
* 用户登陆
*/
public function login($post) {
// 微信登陆 获取session_key
$session = $this->wxlogin($post["code"]);
// 自动注册用户
$user_id = $this->register(

本文通过ThinkPHP 5.0框架,详细介绍了如何实现微信小程序用户登录,包括OAuth2授权、openid处理、token生成与缓存,以及用户信息的获取和注册。教程包含Model层的Wxuser类和Controller层的User控制器实现。
1086

被折叠的 条评论
为什么被折叠?



