目录
如果我们要给网站接入微信快捷登录,一般有这么几个思路。
微信Web应用
通过Oauth2.0 认证实现登录,最传统也是最推荐
但需要
- 要求网站备案
- 需要开发者认证 300块/年
公众号
认证服务公众号
可以通过生成带参数的二维码接口
- 页面展示一个带参数二维码
- 用户扫二维码后会进入公众号,
- 推送扫码事件给开发者服务器,该事件消息中会携带二维码中定义的参数和用户openid
- 关联openid和参数,标记为登录成功
- 页面检查登录状态
网页授权登录
- 页面展示一个带标记的普通二维码,地址指向网页授权登录页面
- 用户扫码二维码后进行授权登录,获取到openid
- 关联openid和标记,标记为登录成功
- 页面检查登录状态
缺点:
- 个人无法认证
- 认证需要300块
- 听说推送扫码事件有时候会抽风,收不到
- 未关注扫码时会出现关注页面
未认证公众号、订阅号
原理是公众号的消息推送会携带用户的openid,通过用户回复验证码或获取验证码均可以实现关联
回复验证码
- 页面展示公众号二维码和显示一个验证码
- 用户扫码二维码后进入公众号
- 发送验证码给公众号
- 关联openid和验证码,标记为登录成功
- 页面检查登录状态
填写验证码
- 页面展示公众号二维码和显示一个验证码输入框
- 用户扫码二维码后进入公众号
- 点击菜单(除了未认证订阅号)或者直接输入【验证码】触发公众号回复或自动回复
- 公众号回复验证码,并关联openid,标记为登录成功
- 用户在登录页面输入验证码,并检查登录状态
缺点:
- 流程多了一个和公众号交互和输入过程
- 未关注扫码时会出现关注页面
小程序
由于个人小程序和企业小程序的区别主要是 支付,webview等,不影响登录和获取小程序码接口。
- 页面展示带场景id的不限制小程序码,指向小程序登录页面
- 用户扫码进入小程序登录页面
- 触发wx.login函数获取code
- 将code和场景id提交到服务器
- 服务器通过code获取用户openid,关联openid和场景id,标记为登录成功
- 页面检查登录状态
缺点
- 目前个人小程序已经和网站一样要求备案
- 需要开发一个小程序页面
- 小程序发布需要审核
- 增加一点点开发难度
参考
接口权限说明