![「代码分享」通过PHP微信扫描关注公众号插图 「代码分享」通过PHP微信扫描关注公众号插图](https://blog.eswlnk.com/wp-content/uploads/wpcy/a6516a35184bdf1b90b6801006dc4d5f.jpg)
安装easywechat库:简化微信开发流程
在项目中使用composer
命令安装easywechat
库:
composer require overtrue/wechat
微信配置:设置服务器接口地址
进入微信公众号后台的基本配置,填写服务器配置中的接口地址,确保该地址是能正确接收微信推送消息的线上地址。关注、扫码、收到消息等事件都会推送到该地址。
![「代码分享」通过PHP微信扫描关注公众号插图1 「代码分享」通过PHP微信扫描关注公众号插图1](https://static.eswlnk.com/2023/09/20230903113407127.png)
创建二维码:实现扫码登录功能
首先生成一个临时二维码,并保存下来生成的ticket值。代码示例:
use EasyWeChat\Foundation\Application;
$unique = md5(password_hash(uniqid(true), PASSWORD_BCRYPT));
$expiry = 600;
$app = new Application($options);
$qrcode = $app->qrcode;
$data = $qrcode->temporary($unique, $expiry);
$ticket = $data->ticket;
$url = $qrcode->url($ticket);
通过以上代码生成的链接地址直接打开即可显示二维码。
服务端接口:处理关注和扫码事件
服务端的接口地址需要与微信后台配置的服务器地址对应。以下示例只添加了关注和扫码事件的处理,更多方法可参考微信官方文档。
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 = $message->Ticket;
$openid = $message->FromUserName;
break;
case 'scan':
break;
}
break;
}
});
以上代码能够获取生成二维码时的ticket值和关注公众号用户的openid。
前端:展示二维码并刷新扫码状态
服务端需要返回二维码地址、ticket和过期时间给前端。前端拿到二维码地址后,可以展示在页面上,当二维码过期时需刷新二维码或提示已过期。可以通过轮询或长连接的方式使用ticket来刷新用户扫码状态,一旦检测到已扫描,即可刷新登录状态,实现用户与公众号的关联。
获取用户信息:根据openid获取用户详细信息
通过获取到的openid,可以获取用户的详细信息:
use EasyWeChat\Foundation\Application;
$app = new Application($options);
$userService = $app->user;
$openid = '***';
$user = $userService->get($openid);
📮评论