您的位置:

uniapp小程序登录应用全解析

一、uniapp小程序登录授权

uniapp小程序需要用户允许其获取用户信息,才能为用户提供个性化服务。因此,几乎所有小程序都需要进行授权。而uniapp小程序又是基于vue、weex等框架构建的,所以其授权流程与原生小程序相似,具体流程如下:

  1. 通过wx.getSetting()获取当前用户的授权情况。
  2. 如果用户从未授权过,则使用wx.authorize()进行授权。
  3. 如果用户已经授权过,则判断scope.userInfo是否为true,若为true,则说明已经授权用户信息,否则重新授权。

以下是相关代码示例:

// 获取用户授权情况
wx.getSetting({
  success(res) {
    if (res.authSetting["scope.userInfo"] === true) {
      // 授权用户信息成功
    } else if (res.authSetting["scope.userInfo"] === false) {
      // 用户拒绝授权
    } else {
      // 未进行过授权,跳转授权页面
      wx.authorize({
        scope: "scope.userInfo",
        success() {
          // 授权用户信息成功
        },
        fail() {
          // 授权用户信息失败
        },
      });
    }
  },
});

二、uniapp小程序网络请求

uniapp小程序使用uni.request()发起网络请求,小程序只支持https协议,不支持http协议。uni.request()会返回一个Promise实例,因此可以使用async/await方法发起请求。

以下是相关代码示例:

async function getData() {
  const res = await uni.request({
    url: "https://xxx.com/api/data",
    method: "GET",
  });
  return res.data;
}

三、uniapp小程序登录功能

uniapp小程序登录是小程序中非常重要的功能。通过用户的登录,我们可以获取其对应的个人信息、权限、等等,为其提供更好的服务。uniapp小程序的登录实现需要考虑以下几个方面。

1. uniapp小程序登录页面

登录页面是uniapp小程序登录的第一步。由于uniapp小程序是基于vue、weex构建的,因此可以使用.vue文件构建登录页面,代码示例如下:

  

<script>
export default {
  data() {
    return {
      username: "",
      password: "",
    };
  },
  methods: {
    async login() {
      // 调用登录方法
    },
  },
};
</script>

2. uniapp小程序登录授权流程

uniapp小程序登录需要先获取用户授权信息,才能进行登录。因此,需要在登录前先进行授权,授权后才能获取到用户信息。以下是相关代码示例:

async function checkAuth() {
  const res = await uni.getSetting();
  if (!res.authSetting["scope.userInfo"]) {
    // 未授权,跳转授权页面
  }
}

async function getUserInfo() {
  const res = await uni.getUserInfo();
  return res.userInfo;
}

async function login() {
  // 检测用户是否授权
  await checkAuth();
  // 获取用户信息
  const userInfo = await getUserInfo();
  // 发送登录请求
  const res = await uni.request({
    url: "https://xxx.com/api/login",
    method: "POST",
    data: userInfo,
  });
  return res.data;
}

3. uniapp小程序登录怎么实现的?

uniapp小程序登录实现有多种方式,最常用的是token方式。通过发起登录请求,server端根据用户信息生成一个token,并返回给客户端,客户端保存该token,后续请求server时通过请求头传递该token,server端通过验证token是否合法来判断用户是否登录。

以下是相关代码示例:

// 登录请求
async function login() {
  // 检测用户是否授权
  await checkAuth();
  // 获取用户信息
  const userInfo = await getUserInfo();
  // 发送登录请求
  const res = await uni.request({
    url: "https://xxx.com/api/login",
    method: "POST",
    data: userInfo,
  });
  // 保存token
  uni.setStorageSync("token", res.data.token);
  return res.data;
}

// 发送请求
async function getData() {
  // 获取token
  const token = uni.getStorageSync("token");
  const res = await uni.request({
    url: "https://xxx.com/api/data",
    method: "GET",
    header: {
      Authorization: `Bearer ${token}`,
    },
  });
  return res.data;
}

4. uniapp小程序登录与app登录

虽然uniapp小程序与app使用的是相同的技术,但是由于所处的环境不同,其登录的实现方式也存在差异。app中的登录可以使用第三方登录方式(如QQ、微信等),uniapp小程序则需要使用uniapp自带的登录方式或者调用server端提供的登录接口进行登录。

5. uniapp小程序登录流程

uniapp小程序的登录流程相对简单,一般可以分为以下几个步骤:

  1. 用户进入登录页面并完成授权。
  2. 小程序获取用户信息。
  3. 小程序将用户信息发送至server端。
  4. server端根据用户信息生成token,并返回给小程序。
  5. 小程序将token保存在Storage中。
  6. 小程序在后续请求中将token作为请求头发送给server端。
  7. server端根据token判断用户信息是否合法,若合法则返回对应数据。

以上是uniapp小程序登录的具体流程,其中授权、请求、登录、token等都是uniapp小程序登录的重要部分。

四、uniapp授权登录

除了常规的微信登录、账号密码登录外,uniapp还支持第三方授权登录。相关代码示例如下:

async function login() {
  const auth = await uni.getSetting();
  if (!auth.authSetting["scope.userInfo"]) {
    const res = await uni.authorize({
      scope: "scope.userInfo",
    });
    if (res.errMsg !== "authorize:ok") {
      uni.showToast({
        title: "授权失败",
        icon: "none",
      });
      return;
    }
  }
  // 获取用户信息
  const userInfo = await uni.getUserInfo();
  // 发送登录请求
  const res = await uni.request({
    url: "https://xxx.com/api/login",
    method: "POST",
    data: userInfo.userInfo,
  });
  // 保存token
  uni.setStorageSync("token", res.data.token);
  return res.data;
}

五、uniapp微信登录

uniapp微信登录是基于微信开放平台实现的,可以使用微信账号登录uniapp小程序。相关代码如下:

async function wxLogin() {
  // 调用微信登录接口
  const res = await uni.login({
    provider: "weixin",
  });
  const wxUserInfo = await uni.getUserInfo({
    provider: "weixin",
  });
  // 将微信返回的code和用户信息发送至server端,并获取token
  const tokenRes = await uni.request({
    url: "https://xxx.com/api/login",
    method: "POST",
    data: {
      code: res.code,
      userInfo: wxUserInfo.userInfo,
    },
  });
  // 保存token
  uni.setStorageSync("token", tokenRes.data.token);
  return tokenRes.data;
}

六、小结

以上是uniapp小程序登录的完整解析,通过本文可以了解到uniapp小程序的授权、网络请求、登录功能、登录页面、授权流程、实现方式、与app登录的差异、登录流程、授权登录、微信登录等内容。通过对相关知识点的掌握,可以为uniapp小程序的开发提供帮助。