第三方网站无需企业资质实现微信登录思路

突发奇想,先码住一个思路,具体还没上手

局限性

  • 仅用于网站服务
  • 小型服务

准备工作

我们需要使用到WxPusher微信消息推送服务

WxPusher (微信推送服务)是一个使用微信公众号作为通道的,实时信息推送平台,你可以通过调用API的方式,把信息推送到微信上,无需安装额外的软件,即可做到信息实时通知。 你可以使用WxPusher来做服务器报警通知、抢课通知、抢票通知,信息更新提示等。

WxPusher开发文档

http://wxpusher.zjiecode.com/docs/#/

用到两个关键功能

  • 创建参数二维码(用于用户扫码登录)
  • 回调请求

流程图

思路

流程梳理

官方的网站微信登录流程:用户扫码->用户确认->网站接收微信回调->登录成功

我们的流程跟这个也差不多,通过wxpush创建二维码,二维码展示在前端,让用户扫码

wxpush请求我们的回调接口,将相关信息传给我们,我们拿着这些信息,创建新用户

创建参数二维码

{
    "appToken":"xxx",   //必填,appToken,前面有说明,应用的标志
    "extra":"xxx",      //必填,二维码携带的参数,最长64位
    "validTime":1800    //可选,二维码的有效期,默认30分钟,最长30天,单位是秒
}

携带数据请求接口http://wxpusher.zjiecode.com/api/fun/create/qrcode

具体创建参数二维码,文档中有。

主要的就是,拿到二维码图片链接,展示在前端,让用户扫码

利用回调请求

用户扫码后,wxpush会向我们的接口请求一次

来看下wxpush回调请求给我们的数据

{
  "action":"app_subscribe",//动作,app_subscribe 表示用户关注应用回调,后期可能会添加其他动作,请做好兼容。
  "data":{
      "appKey":"AK_xxxxxx", //关注应用的appKey
      "appName":"应用名字",
      "source":"scan", //用户关注渠道,scan表示扫码关注,后期可能添加其他渠道,
      "userName":"wxpusher",
      "userHeadImg":"http://xxxxx/132", //最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
      "time":1569416451573, //消息发生时间
      "uid":"UID_xxxxxx", //用户uid
      "extra":"xxx"    //用户扫描带参数的二维码,二维码携带的参数。扫描默认二维码为空
  }
}

我们可以用extra作为未登录用户的标识符

举个例子,当用户扫描二维码时,extra的值是123,扫码成功
wxpush回调,我们的服务器端接收到数据,检查extra的值,值是123,这样就确定了是哪个用户扫的码

拿到uid,用户表中查询是否存在,不存在就注册

注册:

我们可以将userName微信昵称, userHeadImg微信头像, uid用户UID(用户唯一标识符) 再加上用户表的一些必须字段一起存入数据库,用户注册完成

其他应用场景

绑定微信号

用户已经注册为网站用户了,此时想绑定微信

那么现在extra可以设置为此用户的唯一标识符(例如此用户的主键id,只要是唯一的即可),用户扫码,我们接收回调数据,取出extraextra是用户id值,通过id值找到此用户的数据,然后为这条数据新增uid,绑定微信成功

登录成功模板消息

微信官方在我们扫码登录成功后发送的消息

我们这个可以自定义,当然效果肯定没有官方的那么好(滑稽)

添加新评论