公众号受权操做
开发微信公众号时,须要获取到用户的信息,于是不得不设计到微信公众号受权问题(本质是利用OAuth登录)vue
开发模式如何进行受权操做
- 微信公众号提供了两种环境的受权模式,生产环境 开发环境
- 生产环境也就是正式上线环境,具体不作讨论
- 重点谈论开发环境(由于道理同样,主要是在开发时,如何可以更好地模拟生产环境下,获取用户信息)
开发环境
-
申请开发环境微信公众号
api
- 获取到用户的
appid
- 获取到用户的
-
找到对应的网页受权获取用户基本信息,添加
域名
服务器
填写的
域名
本地服务器地址(域名 / ip)便可,不区份内网仍是外网微信
- 生成连接 须要先完成下面三个的具体参数,其余不动
- APPID --- 注册测试的公众号时生成的
- REDIRECT_URI --- 上面填写的域名的完整地址
- SCOPE --- snsapi_base / snsapi_userinfo
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
-
在微信开发者工具中输入上述地址,修改后的地址微信开发
-
成功后会进入是否受权的肯定app
-
跳转回来,地址栏会携带
code
参数,拿到参数进行请求,具体的用户信息,须要后台根据传递的code
来进行请求工具
code [vue]post
getCode () { const code = location.href.split('?')[1] if (!code) return {} const obj = {} code.split('&').forEach(item => { const arr = item.split('=') obj[arr[0]] = arr[1] }) return obj }, getLogin () { const { code } = this.getCode() if (!code) { this.$dialog.toast({ mes: '请受权登录', timeout: 1500, icon: 'error' }) return } const PARAMS = { code } // login 后台提供的接口 this.$fetch.post(login, PARAMS).then(res => { /** * TODO: 若token没值 */ const { token } = res.data this.$store.dispatch('saveToken', token) }).catch(_ => { this.$dialog.toast({ mes: '登录失败', timeout: 1500, icon: 'error', callback: () => { this.$dialog.alert({ mes: '给你一次重来的机会!' }) } }) }) },