【微信小程序-原生开发】实用教程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
    })
  },

目录
相关文章
|
10月前
|
JSON 机器人 API
gewe微信机器人搭建教程
GeWe开放平台是基于 微信开放平台的二次封装API服务,开发者可以使用本服务来处理微信中的各种事件,并可以通过后台调用对应的 API 来驱动微信自动执行任务,如自动收发消息、自动化应答、自动群邀请、群管理等,封装了 RPA技术流程,简化开发者二次开发难度,提供了开发者与微信对接的能力,使用简单,操作快捷,支持多种语言接入。
601 17
|
人工智能 开发框架 机器人
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
AstrBot 是一个开源的多平台聊天机器人及开发框架,支持多种大语言模型和消息平台,具备多轮对话、语音转文字等功能。
7329 38
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
|
12月前
|
存储 API UED
鸿蒙特效教程02-微信语音录制动画效果实现教程
本教程适合HarmonyOS初学者,通过简单到复杂的步骤,一步步实现类似微信APP中的语音录制动画效果。
464 0
鸿蒙特效教程02-微信语音录制动画效果实现教程
|
JSON 小程序 JavaScript
原生微信小程序笔记完整总结
原生微信小程序笔记完整总结
577 1
|
机器学习/深度学习 人工智能 JSON
微信小程序原生AI运动(动作)检测识别解决方案
近年来,疫情限制了人们的出行,却推动了“AI运动”概念的兴起。AI运动已在运动锻炼、体育教学、线上主题活动等多个场景中广泛应用,受到互联网用户的欢迎。通过AI技术,用户可以在家中进行有效锻炼,学校也能远程监督学生的体育活动,同时,云上健身活动形式多样,适合单位组织。该方案成本低、易于集成和扩展,已成功应用于微信小程序。
|
小程序 编译器 数据安全/隐私保护
小白保姆级教程:微信公众号开发,从0到1
【8月更文挑战第8天】小白保姆级教程:微信公众号开发,从0到1
4384 3
小白保姆级教程:微信公众号开发,从0到1
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
3758 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
详细教程:扫码提交表单后,数据直接推送到企业微信、钉钉、飞书群聊
在草料制作的表单中,填表人扫码填写并提交数据后,这些信息可以立即通过企业微信、钉钉或飞书自动推送到相应的群聊中,实现即时共享和沟通,提升团队协作效率。
698 2
|
小程序 前端开发 JavaScript
微信小程序结合PWA技术,提供离线访问、后台运行、桌面图标及原生体验,增强应用性能与用户交互。
微信小程序结合PWA技术,提供离线访问、后台运行、桌面图标及原生体验,增强应用性能与用户交互。开发者运用Service Worker等实现资源缓存与实时推送,利用Web App Manifest添加快捷方式至桌面,通过CSS3和JavaScript打造流畅动画与手势操作,需注意兼容性与性能优化,为用户创造更佳体验。
768 0
|
存储 小程序 JavaScript