使用uni-app获取微信小程序openid(同理小程序) -- 详解

news/2024/7/20 2:13:52 标签: 数据库, java, 小程序, python, openid

精选30+云产品,助力企业轻松上云!>>> hot3.png

博客: 使用uni-app进行小程序的授权登录(获取用户头像,名称,性别,地区等)

博客: 使用uni-app获取微信小程序openid--Java后端实现

介绍openid

微信开发时, 用户使用小程序需要授权, 这时就要用到openid进行绑定这个用户。 openid是微信用户在公众号appid下的唯一用户标识(appid不同,则获取到的openid就不同),可用于永久标记一个用户,同时也是微信JSAPI支付的必传参数。

1. 为什么要使用openid呢?

openid是指这个用户在某一个小程序中授权后的唯一标识(比如你的身份证)

2. 如果不使用会带来什么问题呢?

第一次授权时将用户数据保存到数据库, 然后用户把缓存清理了, 第二次授权的时候我们就无法知道这个用户是否授权过。用户就会重新保存一份新的数据进数据库。这是不符合正常逻辑的,因为如果该用户买过东西,再次授权,东西都看不到了,会像新的号一样。当然了, 有的设计是有自己的记录方式的,比如需要注册登录。

3. openid如何获取?

需要用到wx指定的接口

注意:

注意:一般都是将code值传到后端去获取openid,因为在前端可能会被抓包或爬取到你的appid和secret,不安全,如果放在后端获取openid,除非你的服务器被攻击了,不然就是安全的。下面的实例是在前端直接获取的,这个明白后,可以直接改成后端的,是逻辑一样的。最上面分享了Java后端的实现

步骤一:获取code值

通过uni.login()接口(同理wx.login), 拿到用户的code值(5分钟后失效)。

代码:

javascript">//漫路h
uni.login({
  success: res => {
    //code值(5分钟失效)
    console.info(res.code);
  }
});

步骤二:获取openid

通过小程序的appid和secret和步骤一获取到的code值向wx指定的接口发送请求,便会返回openid(每个小程序唯一的)

代码:

javascript">//漫路h
uni.login({
  success: res => {
    //code值(5分钟失效)
    console.info(res.code);
    //小程序appid
    let appid = 'wx3599fe368a452c9'; //我瞎写的
    //小程序secret
    let secret = '1a5567978saf65c43s8s2397er1332ce'; //我瞎写的
    //wx接口路径
    let url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' + res.code + '&grant_type=authorization_code';
    uni.request({
      url: url, // 请求路径
      method: 'GET', //请求方式
      success: result => {
        //响应成功
        //这里就获取到了openid了
        console.info(result.data.openid);
        uni.setStorage({
          key:'user',
          data: result.data.openid
        })
      },
      fail: err => {} //失败
    });
  }
});

http://www.niftyadmin.cn/n/625980.html

相关文章

使用js进行页面打印window.print(),并实现页面的调整

精选30云产品,助力企业轻松上云!>>> 打印window.print() 看代码 myPrint() {// 1. 设置要打印的区域 div的classNamelet subOutputRankPrint document.getElementById("dy");let newstr subOutputRankPrint.innerHTML;document.b…

学习Java. 基础 18: ArrayList

精选30云产品,助力企业轻松上云!>>> ArrayList 1. 概念: 数组:一维数组 String[], 长度固定 超级数组-ArrayList(集合): 长度动态改变的 ArrayList比数组强大: 1、长度动…

学习Java--idea中jar包的讲解与使用步骤

精选30云产品,助力企业轻松上云!>>> jar 把需要给别人的大量class文件,包装 工具包(jar包) 步骤一: 获取jar包 步骤二: 某个项目中,创建lib文件夹, 在文件夹内拷贝对应的jar包。 步骤三:向lib目…

学习Java. 基础 19: 方法的讲解与使用示例

精选30云产品,助力企业轻松上云!>>> 方法 1. 概述 例如生活中人有吃饭功能, 人的这个吃饭功能就相当于Java中的吃饭方法。 功能 方法(功能就相当于是方法)。 一个方法内部可以有大量的代码。 方法需要自己定义。相当于…

python 算数运算符赋值运算符

精选30云产品,助力企业轻松上云!>>> 1. Python算数运算符 符号作用说明加计算两个数的和-减计算两个数的差*乘计算两个数的乘积/除计算两个数的商//整除两个整数相除后,取结果的整数部分%取余两个整数相除后,取结果的余数部分**乘方计算a的b次…

学习Java. 基础 20: 方法重载

精选30云产品,助力企业轻松上云!>>> 方法重载 1.方法重载的概念 方法重载: 方法名相同, 参数列表不同。(方法重载也叫重载方法)在同一个类中, 不能出现两个完全一样的方法。 完全一样的意思是:方法名和参数…

Spring简述

精选30云产品,助力企业轻松上云!>>> 1. Spring 简述 为什么要学习Spring?传统项目优点:搭建容易 传统项目缺点: 1、service、dao 对象都是程序员手动new 出来。(没有考虑过何时销毁、没有考虑过多线程相关…

学习Java. 基础 21: String类的详解

精选30云产品,助力企业轻松上云!>>> 1. String类 1.1. 字符串概念 字符串是日常开发中最常用的。代表一个字符序列,其底层为字符数组 1.2. 常见方法 构造方法名称描述String(String original)把字符串数据封装成字符串对象String(…