mpvue 项目初始化及实现授权登录的实现方法

yizhihongxing

mpvue 项目初始化及实现授权登录的实现方法

简介

mpvue 是基于 Vue.js 的小程序开发框架,使我们可以使用 Vue.js 的语法来开发小程序,同时支持快速构建项目以及各种插件。授权登录是小程序中必不可少的一部分,本文将讲解如何使用 mpvue 实现授权登录。

前置条件

  • 了解 Vue.js 和小程序,了解基本的前端开发知识
  • 安装并配置好小程序开发环境、Node.js 和 npm

项目初始化

安装 mpvue-cli

使用以下命令安装 mpvue-cli:

npm install -g vue-cli
npm install -g mpvue-cli

创建项目

使用以下命令创建项目:

vue init mpvue/mpvue-quickstart <project-name>

该命令使用 mpvue-quickstart 模板创建一个新的项目,并安装相关依赖。

目录结构

创建完成后,项目目录结构如下:

project
├── build                                   # webpack 配置文件
├── node_modules                            # 依赖包
├── src                                        # 项目源码
│   ├── assets                              # 资源
│   ├── components                             # 组件
│   ├── pages                                # 页面
│   ├── store                                # 状态管理
│   ├── App.vue                              # 页面入口文件
│   ├── main.js                               # 程序入口文件,加载各种公共组件
├── static                                      # 项目静态资源
├── .babelrc                                  # babel 配置文件
├── .editorconfig                      # 编辑器配置文件
├── .eslintignore                     # ESLint忽略文件配置
├── .eslintrc.js                           # ESLint配置
├── index.html                               # 入口html文件
├── package.json                          # 项目配置文件
├── README.md                           # 项目说明文件

代码实现

微信登录

首先需要在小程序管理后台中开通微信登录功能,并获取对应的 appid 和 appsecret。

src 目录下新建 componentspages 文件夹,分别用来存放组件和页面。

pages 目录下新建一个名为 login 的页面,将以下代码输入到 login.vue 中:

<template>
  <div class="login">
    <button @click="login">微信登录</button>
  </div>
</template>

<script>
export default {
  methods: {
    login() {
      uni.login({
        success({ code }) {
          // 这里调用后台服务端的登录接口,获取openid 和 sessionKey 
        }
      })
    }
  }
}
</script>

<style scoped>
.login {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}
</style>

其中使用了 uni.login 接口来获取用户的登录凭证 code,然后将 code 发送到后台服务端进行登录操作。

后台服务端

编写后台服务端的登录接口,用 code 来获取用户的 openid 和 session_key 信息:

示例代码:

const request = require('request');
const { appId, appSecret } = wxConfig;

app.post('/login', async (req, res) => {
  const { code } = req.body;

  if (code) {
    request({
      url: `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${appSecret}&js_code=${code}&grant_type=authorization_code`,
      method: 'GET',
      json: true
    }, async (error, response, body) => {
      const { openid, session_key } = body;
      // 处理业务逻辑,如用户的登录、注册等
    });
  } else {
    res.json({
      code: -1,
      message: '缺少参数code'
    });
  }
});

获取用户信息

接下来就是从服务端获取用户信息,采用 uni.getUserInfo 接口进行处理,代码如下:

<template>
  <div class="login" v-if="!isLogin">
    <button @click="login">微信登录</button>
  </div>
  <div class="user" v-else>
    <img :src="avatarUrl" />
    <div>{{ nickname }}</div>
    <button @click="logout">退出登录</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isLogin: false,
      nickname: '',
      avatarUrl: ''
    }
  },
  methods: {
    login() {
      uni.login({
        success({ code }) {
          uni.getUserInfo({
            withCredentials: true,
            success: (info) => this.getUserInfo(info),
            fail: (e) => {}
          })
        }
      })
    },
    getUserInfo(info) {
      const { encryptedData, iv } = info;
      // 将 encryptedData 和 iv 发送到后台服务端,获取用户信息
    },
    logout() {
      this.isLogin = false;
    }
  }
}
</script>

<style scoped>
.login {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}
.user {
  display: flex;
  flex-direction: column;
  align-items: center;
}
</style>

其中,isLogin 用来判断用户是否已经登录成功,如果登录成功,则将 isLogin 设为 true。getUserInfo 方法用来向后台服务端获取用户信息,从后台服务端获取信息后,将 nickname 和 avatarUrl 设为获取到的值即可。

结束语

通过以上代码,我们可以使用 mpvue 快速搭建小程序,同时采用微信登录的方式进行授权登录,微信登录是小程序中非常重要的一部分,本文以 mpvue 为例,介绍了小程序的登录流程以及如何获取用户信息。希望本文对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mpvue 项目初始化及实现授权登录的实现方法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue中$refs的三种用法解读

    下面我将详细讲解一下“vue中$refs的三种用法解读”的完整攻略。 一、$refs的作用 $refs是Vue.js提供的一个特殊的属性,它可以用来在父组件中访问子组件以及HTML元素。它的作用主要有以下三个方面: 访问子组件的实例对象 获取DOM元素的引用 访问子组件中的方法和属性 二、$refs的用法 1. 访问子组件的实例对象 使用$refs可以非常方…

    Vue 2023年5月27日
    00
  • vue 解决数组赋值无法渲染在页面的问题

    当 Vue 绑定的数据是一个数组时,使用原生的赋值方式(例如 array[0] = newValue)并不会触发组件的重新渲染,因为 Vue 无法识别这种方式的数据变动。为了解决这种问题,需要使用 Vue 提供的特殊方法,或在代码层面做出一些调整。 下面是解决数组赋值无法渲染在页面的问题的完整攻略: 1. 使用特殊方法进行数组数据更新 Vue 提供了一些特殊…

    Vue 2023年5月28日
    00
  • Vue.JS入门教程之处理表单

    下面就来详细讲解如何处理表单的相关内容。 一、表单基础 1.1 表单元素 表单是Web应用程序中不可或缺的组成部分,它允许用户输入数据并将其提交给服务端进行处理。表单由一个或多个表单元素组成,常见的表单元素包括: input:文本输入框、复选框、单选框等 select:下拉框 textarea:文本域 button:提交按钮、重置按钮等 label:表单元素…

    Vue 2023年5月27日
    00
  • Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解

    Vue是一种流行的JavaScript框架,用于构建大型Web应用程序。Vue官方推荐使用Vuex来管理应用程序中的状态。Vuex是一个专为Vue.js应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以清晰的规则保证状态只能通过mutations更改,由于这一特性,Mutation成为了Vue唯一可以更改vuex实例中state数据状…

    Vue 2023年5月28日
    00
  • 使用Vue中 v-for循环列表控制按钮隐藏显示功能

    使用Vue中v-for循环列表控制按钮隐藏显示功能分为以下几个步骤: 在Vue实例中定义数据:需要定义一个存储列表数据的数组,以及每个元素对应的控制按钮是否显示的状态变量。比如: data() { return { list: [ { id: 1, name: ‘item 1’, showButton: false }, { id: 2, name: ‘it…

    Vue 2023年5月29日
    00
  • 关于vue3中的reactive赋值问题

    Vue3中的reactive函数是实现响应式原理的重要工具,它会将对象转化成响应式的对象(Reactive Object),并返回该响应式对象的代理对象(Proxy),这个代理对象会拦截响应式对象的访问和修改,从而实现数据驱动视图的效果。在使用Vue3的开发过程中,我们需要注意一些关于reactive对象赋值的问题。 关于赋值的问题 在Vue3中使用reac…

    Vue 2023年5月29日
    00
  • vue-router传递参数的几种方式实例详解

    下面我来详细讲解“vue-router传递参数的几种方式实例详解”的完整攻略。 1. 传递参数的基本方式 在vue-router中,我们可以通过在router-link组件的to属性中传递参数,然后在目标组件中通过$route.params获取参数。具体步骤如下: 设置router-link组件的to属性,传递参数。例如: // 在组件中使用router-l…

    Vue 2023年5月27日
    00
  • Vite结合Vue删除指定环境的console.log问题

    以下是关于 “Vite结合Vue删除指定环境的console.log问题”的完整攻略: 1. 背景 在vue项目开发中,为了便于调试,会在代码中使用console.log()输出一些信息。但是在发布正式环境时,这些console.log()输出的信息会影响性能并且不安全。因此,需要在正式环境中删除这些console.log()代码。 2. 解决方案 Vite…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部