uniapp

  1. 在微信公众平台中创建网页授权应用,并获取到appID和appSecret。
  2. 在uniapp中使用uni.request方法获取用户openID和access_token。需要在请求中携带微信授权页面中获取的code参数和appID、appSecret参数。
  3. 将获取到的用户openID和access_token存储在uniapp的本地存储中。
  4. 在需要登录的页面,判断本地存储中是否存在用户openID和access_token。如果存在,则说明用户已登录,可以直接跳转到登录后页面;如果不存在,则说明用户未登录,需要跳转到微信授权页面进行登录授权。
  5. 在微信授权页面中,用户授权通过后,微信平台会返回一个code参数,使用该code参数以及appID、appSecret参数,请求微信平台获取用户openID和access_token,并将其存储在本地存储中。
  6. 登录成功后,可以在本地存储中获取用户信息,并进行相关业务操作。

获取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

  1. 创建跳转至微信登录页的方法。
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;
}
  1. 编写获取微信用户信息的方法。
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;
  // 在这里将信息传递给后端进行处理并登录
}
  1. 在回调页面中调用获取微信用户信息的方法。
  const params = new URLSearchParams(window.location.search);
  const code = params.get('code');
  if (code) {
    this.getWechatUserInfo(code);
  }

注意:回调页面的域名需要在微信公众号中进行配置,否则会获取失败。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐