通过前端怎样在vue中进行微信网页授权登录
背景:
公司目前上一个新项目,需要使用微信授权登录,和后端商量了一下,决定使用微信登录的第一种方法进行授权登录,
就是后台给一个接口,
由前端直接执行,跳转到一个新页面,新页面中生成一个二维码来进行授权登录。虽然,这种方式很多公司都在用,
但产品说这种方式的体验
不够好,所以使用了下面的授权方法,也就是第二种的微信授权登录方案,能在当前页生成二维码登录:
步骤实现:
- 在vue中,能够用轮子的就用轮子,于是在npm中找到了一个微信登录的包vue-wxlogin
接下来在组件中引入:
import wxlogin from 'vue-wxlogin';
组件中使用,可以声明一个对象来保存生成二维码的信息,为了数据的安全,我们不能直接在前端页面写死,生成二维码的信息,可以让后端通过接口来获取生成二维码的信息,接着就是以组件属性的参数传给wxlogin
<wxlogin style="margin-left: 25px" :href="wx.href" :state="wx.state" :appid="wx.appid" :scope="wx.scope" :redirect_uri="wx.redirect_uri"></wxlogin>
属性参数详解
属性名 类型 描述 appid String 应用唯一标识,在微信开放平台提交应用审核通过后获得 scope String 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可 redirect_uri String 重定向地址,需要进行UrlEncode state String 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验 theme String 提供"black"、"white"可选,默认为黑色文字描述。 href String 自定义样式链接,第三方可根据实际需求覆盖默认样式。
需要注意的属性,
1.redirect_uri(回调地址)必须要进行**UrlEncode转码**,这是一个巨坑啊,本人在这个问题卡了一个下午 2.href (自定义二维码样式的链接),必须是https的链接而且要带有证书才可以,如果不用链接的方式可以使用data_url的方法来进行样式的传递 例如:`data:text/css;base64,`+你自己的样式内容把它转为base64然后拼接在一起就可以了,更具体的可阅读[自定义微信登录扫码样式解决办法][2]
- 测试时需要注意: 前端项目需要放在后台授权返回地址同一个域下
最后,有不明白的可加我wx: czr13692478981
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。