PHP —— 用 ThinkPHP5.0 实现微信小程序登陆

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

PHP —— 用 ThinkPHP5.0 实现微信小程序登陆

《工欲善其事,必先利其器》
大家好,之前学习了 原生 PHP 和框架,今天我们运用框架 TP5.0 来实现一下微信小程序的用户登陆以及获取用户的信息接口。

一、创建 Wxuser 模型

一般 MVC 框架的数据操作,都是在 Model 层里面的,所以这里我们需要实现微信登陆的模型,代码如下,分为几个小功能点:

  1. 使用前端发来的 code 去换取 openid;
  2. 利用 openid 生成 token;
  3. 将 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(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值