微信扫码登陆 无需开放平台实现方案

pc端通过公众平台微信扫码登陆 无需开放平台账号

微信扫码登陆流程

1.通过调用微信接口生成二维码
2.前端展示这个二维码,并循环请求后端微信是否回调
3.根据回调结果处理扫码后的操作

扫码获取用户微信信息

扫码登陆的核心是用户扫描二维码后,后台从微信获取用户的openid等信息,然后在回调函数中验证你自己系统中的账号与openid的关联关系 进行登陆等逻辑,因此扫码登陆的第一步是生成这个二维码。

二维码生成

微信提供的生成二维码的接口有2个 :
一个是基于微信开放平台的。在有开发平台账号的情况下可直接使用开发平台: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect;
生成二维码。这需要开发者资质验证。
另一种则是利用微信公众平台 ,生成二维码,进行扫码登陆
生成二维码的url为
https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appId+"&scope=snsapi_userinfo&response_type=code&state="
+state + “&redirect_uri=”+redirect_uri+"#wechat_redirect"
注意这里使用的scope是snsapi_userinfo 或者snsapi_base 而上面的url使用的是snsapi_login
但这个url产生的二维码只能在微信浏览器中展示 这时候可以自己生成二维码
在这里插入图片描述
最简单的可以使用 http://qr.topscan.com/api.php?text="+URLEncoder.encode(url, “GBK”);然后前端直接打开返回的链接
在这里插入图片描述
这里可以进一步优化 使用微信的长链接转短链接对后面的url进行处理

至此用户扫码二维码并点击确认后,微信服务器会回调你上面设置的redirect_uri,在这里可以获取用户的openid。

最后 使用这种方式还是存在几个问题的

  1. 用户扫码后是提示用户关注公众号 并不是微信提供的登陆确认页面
  2. 展示二维码的页面也不是微信给出的页面 但这个可以根据自己的需求去改。

因此最佳的方案还是根据微信官方的文档,使用开发平台去进行扫码登陆,这也利于后期使用unionId进行管理多个微信的公众号 小程序。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值