uniapp和vue中分别实现微信公众号登录功能
注意,需要在微信公众平台中配置网页授权回调域名,否则获取用户信息的请求将会失败。注意:回调页面的域名需要在微信公众号中进行配置,否则会获取失败。
·
uniapp
- 在微信公众平台中创建网页授权应用,并获取到appID和appSecret。
- 在uniapp中使用uni.request方法获取用户openID和access_token。需要在请求中携带微信授权页面中获取的code参数和appID、appSecret参数。
- 将获取到的用户openID和access_token存储在uniapp的本地存储中。
- 在需要登录的页面,判断本地存储中是否存在用户openID和access_token。如果存在,则说明用户已登录,可以直接跳转到登录后页面;如果不存在,则说明用户未登录,需要跳转到微信授权页面进行登录授权。
- 在微信授权页面中,用户授权通过后,微信平台会返回一个code参数,使用该code参数以及appID、appSecret参数,请求微信平台获取用户openID和access_token,并将其存储在本地存储中。
- 登录成功后,可以在本地存储中获取用户信息,并进行相关业务操作。
获取openID和access_token:
uni.request({
url: 'https://api.weixin.qq.com/sns/oauth2/access_token',
data: {
appid: 'YOUR_APPID',
secret: 'YOUR_APP_SECRET',
code: code,
grant_type: 'authorization_code'
},
success: (res) => {
// 获取用户openID和access_token
let openID = res.data.openid;
let accessToken = res.data.access_token;
// 存储到本地存储中
uni.setStorageSync('openID', openID);
uni.setStorageSync('accessToken', accessToken);
}
})
注意,需要在微信公众平台中配置网页授权回调域名,否则获取用户信息的请求将会失败。
vue
- 创建跳转至微信登录页的方法。
wechatLogin() {
const redirect_url = '微信授权回调域名';
const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.appId}&redirect_uri=${encodeURIComponent(redirect_url)}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`;
window.location.href = url;
}
- 编写获取微信用户信息的方法。
async getWechatUserInfo(code) {
const url = `https://api.weixin.qq.com/sns/oauth2/access_token?appid=${this.appId}&secret=${this.appSecret}&code=${code}&grant_type=authorization_code`;
const response = await axios.get(url);
const { access_token, openid } = response.data;
const infoUrl = `https://api.weixin.qq.com/sns/userinfo?access_token=${access_token}&openid=${openid}`;
const infoResponse = await axios.get(infoUrl);
const { nickname, headimgurl } = infoResponse.data;
// 在这里将信息传递给后端进行处理并登录
}
- 在回调页面中调用获取微信用户信息的方法。
const params = new URLSearchParams(window.location.search);
const code = params.get('code');
if (code) {
this.getWechatUserInfo(code);
}
注意:回调页面的域名需要在微信公众号中进行配置,否则会获取失败。
更多推荐



所有评论(0)