PHP实现微信扫码登陆(一)

一. 概述

在项目中, 实现微信登陆的功能, 描述如下:

  1. 打开网站首页, 点击登陆按钮, http://106.12.42.187/index
  2. 点击登陆, 弹出二维码
  3. 手机微信扫码后, 跳转到公众平台
    • 如果用户已经关注, 则直接登陆
    • 如果用户没有关注, 就提示用户关注, 关注后, 直接登陆


      image.png

扫码后到底 前台 -- 后台 -- 微信 之间发生了哪些不可告人的秘密呢?
本系列文章使用PHP-Laravel框架带大家一步一步实现微信登陆的功能

使用Laravel实现服务端
使用workerman实现websocket服务器

二. 原理

  1. 客户端点击登陆, 向后台发起请求, 获取ticket和scene_id(随机生成的整数)

  2. 客户端使用ticket向微信服务器发起请求, 获取二维码
    https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=abc
    并且向后台websocket服务端发起websocket连接, 并且推送scene_id, 后台将scene_id加入到连接数组里

  3. 用户使用微信扫码, 点击关注, 微信公众号将用户关注事件推送到PHP服务端

  4. PHP服务端使用openid请求微信服务器, 获取用户详细信息, 保存到数据表, 然后向websocket服务端推送openid和scene_id

  5. websocket服务端接收到php服务端推送来的openid和scene_id, 使用scene_id确定具体是哪一个客户端, 然后向其推送openid

  6. 客户端接收到websocket的推送, 携带openid向php服务端请求login登录接口, php服务端将openid写入到session中, 标识用户已经登录

可以有选择读如下博客

你可能感兴趣的:(PHP实现微信扫码登陆(一))