【微信小程序-原生开发】实用教程11 - 用户登录鉴权(含云函数的创建、删除、使用,通过云函数获取用户的openid)

简介: 【微信小程序-原生开发】实用教程11 - 用户登录鉴权(含云函数的创建、删除、使用,通过云函数获取用户的openid)

此篇可在实用教程10(见下方链接)的基础上继续开发,也可以在任何微信小程序中直接使用。

https://blog.csdn.net/weixin_41192489/article/details/128835069

用户登录鉴权逻辑

核心技术:通过云函数获取用户的openid

要想使用云函数,需先开通并初始化云环境,可参考下方链接进行配置

https://blog.csdn.net/weixin_41192489/article/details/128797403

创建云函数 get_openid

在 cloudfunctions 文件夹上点击鼠标右键的快捷菜单中选择新建 Node.js 云函数

命名为 get_openid,便会自动生成默认的云函数。

cloudfunctions\get_openid\config.json

{
  "permissions": {
    "openapi": [
    ]
  }
}

cloudfunctions\get_openid\index.js

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
}) // 使用当前云环境
// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

cloudfunctions\get_openid\package.json

{
  "name": "get_openid",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "wx-server-sdk": "~2.6.3"
  }
}

上传部署云函数

在目标云函数上右键快捷菜单选择上传并部署

云函数前的文件夹变成绿色,即表示部署成功。

删除云函数

仅在本地无法删除云函数,需先去微信云函数控制台删除该云函数才行!

云端删除后,回到本地同步云函数列表

此时该云函数的文件夹从绿色变成灰色,右键快捷菜单删除即可。

使用云函数

  getOpenID() {
    return new Promise((resolve) => {
      wx.cloud.callFunction({
        name: 'get_openid' // 云函数的名称
      }).then(res => {
        // 从云函数返回的结果中提取出目标数据
        resolve(res.result.openid);
      })
    })
  },

小程序启动时,开始用户登录鉴权

app.js 的 onLaunch 中

  // 生命周期--小程序启动时执行
  async onLaunch() {
        const openid = await this.getOpenID();
        this.login(openid)
  }

用户登录鉴权的实现

app.js

  login(openid) {
    let that = this
    wx.cloud.database().collection('user').where({
      _openid: openid
    }).get().then(res => {
      // 查询openid是否已注册(是否在 user 表中)
      let data = res.data
      if (data.length > 0) {
        let userInfo = data[0]

        // 判断openid是否审核通过(有No)
        if (userInfo.No) {
          // 审核通过,保持进入页,将用户信息写入缓存
          wx.setStorageSync('userInfo', userInfo)
        } else {
          // 已注册但待审核,跳转到注册页查看审核状态
          that.gotoRegister("已注册")
        }
      } else {
        // 未注册,跳转到注册页注册
        that.gotoRegister("注册")
      }
    })
  },
  gotoRegister(type) {
    wx.reLaunch({
      url: '/pages/register/index?type=' + type
    })
  },

目录
相关文章
|
8月前
|
人工智能 小程序 前端开发
一个小程序轻量AR体感游戏,开发实现解决方案
针对青少年运动兴趣不足问题,AR体感游戏凭借沉浸式互动体验脱颖而出。结合小程序“AI运动识别”插件与WebGL渲染技术,可实现无需外设的轻量化AR健身游戏,如跳糕、切水果等,兼具趣味性与锻炼效果,适用于儿童健身及职工团建,即开即玩,低门槛高参与。
|
8月前
|
运维 小程序 数据可视化
小程序开发平台有哪些?SaaS小程序制作平台哪个好
小程序开发模式详解:自主开发、SaaS小程序制作平台与外包全对比 选择合适的小程序开发模式,是项目成功的基石。这三种模式在成本、周期、控制力和灵活性上各有千秋,适用于不同阶段和不同类型的企业。下面我们将逐一深入剖析。
706 9
|
8月前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?哪个好
小程序的开发方式丰富多元,开发团队可根据自身的技术背景、项目具体需求以及资源状况,灵活挑选最为适宜的开发路径。以下将详细介绍几种主流的小程序开发方式。
676 1
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
9月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
2428 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
10月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
530 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
4300 7