Contents

微信扫码登录(微信公众平台)

需求

用户点击微信登录,弹出二维码,用户打开微信扫描二维码即可完成登录。如果用户未关注公众号,则点击关注即可完成登录。

前提

首先用户要先绑定微信,具体可查看扫码绑定微信

步骤

  1. 后端生成带随机场景值的二维码
  2. 用户扫码或关注时会通知服务器,并附带openid
  3. 前端轮询登录结果

文档

实现

基于easywechat

生成带参数的二维码

use EasyWeChat\Factory;

// 一些配置
$config = [...];

// 使用配置来初始化一个公众号应用实例。
$app = Factory::officialAccount($config);
$result = $app->qrcode->temporary('login', 6 * 24 * 3600);

// Array
// (
//     [ticket] => gQFD8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyTmFjVTRWU3ViUE8xR1N4ajFwMWsAAgS2uItZAwQA6QcA
//     [expire_seconds] => 518400
//     [url] => http://weixin.qq.com/q/02NacU4VSubPO1GSxj1p1k
// )

微信事件推送

use EasyWeChat\Factory;

$config = [...];

$app = Factory::officialAccount($config);
$message = $app->server->getMessage();

if (isset($message['MsgType']) && $message['MsgType'] === 'event') {
    switch ($message['Event']) {
        case 'subscribe':
            // 处理用户订阅事件
            if ($message['EventKey'] === 'login') {
            	// todo,
        	}
            break;
        case 'SCAN':
            // 处理用户扫码事件
            if ($message['EventKey'] === 'qrscene_' . ’login‘) {
                // todo
            }
            break;
    }
}

return $app->server->serve();