1、安装easywechat
基于easywechat框架开发,首先下载安装easywechat
composer require overtrue/wechat
2、公众号配置
先去公众号后台基本配置/ 填写服务器配置配置接口,需要是线上能正确收到微信推送消息的地址,关注如果有关注、扫码、收到消息等事件都会推送到该地址
3、创建二维码
首先创建一个临时二维码,ticket保存下来
use EasyWeChat\Foundation\Application; // 生成随机数 $unique = md5(password_hash(uniqid(true), PASSWORD_BCRYPT)); // 二维码有效期600秒 $expiry = 600; $app = new Application($options); $qrcode = $app->qrcode; $data = $qrcode->temporary($unique, $expiry); // 这个值保存下来,待会查询扫码状态可以用到 $ticket = $data->ticket; // 二维码的地址 $url = $qrcode->url($ticket);
拿到如下格式的链接地址,直接打开就是一张二维码
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQHA7zwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyNmZudTBoOUJldUQxYWhhYXhBY1gAAgQ5iApkAwRYAg11
4、服务端接口
此接口地址需要对应微信后台配置的服务器地址,下面示例只添加了关注 扫码,更多方法参考微信官方文档
use EasyWeChat\Foundation\Application; $app = new Application($options); // 从项目实例中得到服务端应用实例。 $server = $app->server; $server->setMessageHandler(function ($message) { switch ($message->MsgType) { // 收到事件消息 case 'event': switch (strtolower($message->Event)) { // 公众号关注 case 'subscribe': // 可以拿到创建二维码时候的ticket值 $ticket = $message->Ticket; // 关注用户的openid $openoid = $message->FromUserName; break; //二维码被扫 case 'scan': break; // ... } break; } // ... });
上面方法可以拿到生成二维码时候的的ticket,和关注公众号用户的openid。
5、前端处理
服务端需要返回二维码地址、ticket、过期时间
前端拿到二维码地址后,将二维码展示给页面,二维码过期需要刷新二维码或者提示已过期。
可以使用轮询或者长连接的方式通过ticket刷新用户扫码状态,检测到已扫描刷新登录状态,用户成功和公众号关联。
6、后端获取用户信息
通过获取到的openid就能获取到用户信息了
use EasyWeChat\Foundation\Application; $app = new Application($options); $userService = $app->user; $openoid = '***'; $user = $userService->get($openoid);
- 公众号登录接口无限回调系统源码修复版 [2024-07-12]
- 批量下载公众号内容/音频/视频Python工具+源码 [2023-11-13]
- 微信扫码关注公众号登录功能php实战分享 [2023-09-24]
- 关注公众号才显示内容的WordPress引流插件 [2023-09-04]
- 微信公众号文章搜索导出助手V1.6.5 [2023-07-02]