uniapp微信小程序端实现微信登录

从网上看了一些,好像说是要先调用uni.getUserProfile 或者uni.getUserInfo获取用户信息后,然后再调用uni.login才行,但是我看着uni.getUserProfile和uni.getUserInfo 返回的都是一些匿名信息(nickName: "微信用户", 头像也是统一的灰色头像),不知道有啥用哦,应该是之前是可以正常返回的,后来不知哪个版本后应该是为了用户的隐私、安全啥的,就都返回匿名信息了。

上面都是uniapp官网提供的一些API,地址如下:

https://uniapp.dcloud.net.cn/api/plugins/login.html#login

这些是一些获取授权信息的一些API,除此外,uniapp还提供button组件设置open-type 更方便我们获取授权信息,具体如下:

<template><view><button class="WX-login-btn" open-type="getUserInfo" @getuserinfo="getuserinfo">微信登录</button></view>
</template>
<script>
export default {data() {return {}},methods: {getuserinfo(e) {console.log(e.detail.userInfo)}}
}
</script>

open-type可选值以及对应的方法等具体信息见官网:https://uniapp.dcloud.net.cn/component/button.html

这些都是获取一些授权信息的API,除了这些还有:

uni.authorize(提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。如果用户之前拒绝了授权,此接口会直接进入失败回调,一般搭配uni.getSettinguni.openSetting使用。)地址如下:

https://uniapp.dcloud.net.cn/api/other/authorize.html

https://uniapp.dcloud.net.cn/api/other/setting.html

下面是一个简单使用示例: 

// 授权信息
getAuthorizeInfo() {return new Promise((resolve, reject) => {uni.getSetting({success: res => {if (res.authSetting['scope.userInfo']) {uni.getUserInfo({provider: 'weixin',success: ({ userInfo }) => {resolve(userInfo)},fail(e) {reject(e)}})} else {uni.authorize({scope: 'scope.userInfo',success: e => {console.log(e)},fail: e => {uni.openSetting({success(res) {console.log(res)}})}})}},fail(e) {reject(e)}})})
}

大家看下上面如果有用到的就用,用不到的话就先不管。

登录

那正常核心的是先调用uni.login获取到临时的code,然后通过code、appid(小程序ID)、AppSecret(小程序密钥) 、grant_type(值为"authorization_code")去调用微信的接口

https://api.weixin.qq.com/sns/jscode2session

但是因为涉及的敏感数据、为了安全起见,该接口要在服务端调用。

code是uniapp中通过uni.login获取的(https://uniapp.dcloud.net.cn/api/plugins/login.html#login) ,获取到后,调用后端的接口,将code传递给后端,然后后端去调用如上接口换取到openid(openid就是微信登录后的用户的唯一凭证),然后后端获取到openid后,返回给前端,前端存一下,然后后面再调用接口时,应该时将openid携带上。小程序登录官网:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html

整体的流程图如下:

大体的代码如下:简单写了一下,供参考

// 微信登录
wxLogin(e) {if (!this.isCheck) {uni.showToast({title: '请勾选并阅读协议',icon: 'none'})return}uni.login({provider: 'weixin', //使用微信登录success: loginRes => {const code = loginRes.code// 将code传递给后端request({url: 'xxxxxxx',method: 'post',params: { code }}).then(({ openid }) => {console.log(openid, '获取到openid')uni.setStorageSync('openid', openid)})}})
}

如果说在调用uni.login之前还需要先获取用户的其他的需要授权的一些信息,就看上面我说的api就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1475080.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

经济寒冬:竞品凶猛,你的产品如何求生?

那些年曾被竞品干掉的产品 1997年到2010年左右是国内互联网行业的快速发展和多元化发展的时期&#xff0c;这一时期涌现出来一大批优秀的产品&#xff0c;市场竞争越来越激烈。苹果 在20 世纪 80 年代&#xff0c;乔布斯的苹果电脑&#xff0c;在当时可是PC行业的老大&#xf…

tessy 单元测试:小白入门指导手册

目录 1,创建单元测试工程目录 2,导入单元测试源文件 一:创建测试文件夹(最好和代码目录一一对应,方便查找) 二:选择测试环境 三:添加源文件 四:分析源文件 3,编写单元测试用例 一:设置函数参数的传输方向 二:添加单元测试用例 三:编辑单元测试用例数据 …

Kafka抛弃Zookeeper后如何启动?

Kafaka如何下载 官网地址 目前Kafka最新的版本就是3.7.1 我们可以看到下面这两个版本信息&#xff1f;什么意思呢&#xff1f; Scala 2.12 - kafka_2.12-3.7.1.tgz (asc, sha512)Scala 2.13 - kafka_2.13-3.7.1.tgz (asc, sha512) 我们应该知道&#xff0c;一个完整的Kafka实…

互联网十万个为什么之什么是数据备份?

数据备份是按照一定的备份频率创建数据副本的过程&#xff0c;将重要的数据复制到其它位置或者存储介质&#xff0c;并对生成的副本保留一定的时长。备份通常储存在不同的物理介质或云端&#xff0c;以确保数据的连续性和完整性。有效的备份策略至关重要&#xff0c;以防止数据…

c#类型转换和常见集合类型

目录 1. 整数转换&#xff0c;整数和字符串&#xff0c;字符串和整数之间的转换怎么实现&#xff1f; 2. 日期转换&#xff0c;获取当前日期&#xff0c;字符串转日期&#xff0c;日期转字符串怎么实现&#xff1f; 3. 举例一维、二维、三维数组 4. 需求&#xff1a;有个88…

07浅谈大语言模型可调节参数tempreture

浅谈temperature 什么是temperature&#xff1f; temperature是大预言模型生成文本时常用的两个重要参数。它的作用体现在控制模型输出的确定性和多样性&#xff1a; 控制确定性&#xff1a; temperature参数可以控制模型生成文本的确定性&#xff0c;大部分模型中temperatur…

《C++20设计模式》命令模式思考

文章目录 一、前言二、分析 拆解1、经典命令模式2、撤销操作3、关于Invoker类 三、实现 一、前言 哎&#xff01;只要是书上写的和经典设计模式不同&#xff0c;我就会很伤脑筋。&#x1f629; 命令模式到底是干什么的&#xff1f; 答&#xff1a;命令的发送者和接收者完全解…

SQLServer的系统数据库用别的服务器上的系统数据库替换后做跨服务器连接时出现凭证、非对称金钥或私密金钥的资料无效

出错作业背景&#xff1a; 公司的某个sqlserver服务器要做迁移&#xff0c;由于该sqlserver服务器上数据库很多&#xff0c;并且做了很多的job和维护计划&#xff0c;重新安装的sqlserver这些都是空的&#xff0c;于是就想到了把系统4个系统数据库进行替换&#xff0c;然后也把…

应用在灯带Type-C接口上的PD SINK协议芯片ECP5701/ECP5702获取充电器的5V、9V、12V、15V、20V供电

方案背景 近日&#xff0c;欧盟就统一充电器接口的提案达成了一项政治协议&#xff0c;其中规定了在欧盟地区销售的所有手机或其他便携式中小型电子设备必须采用统一的USB Type-C接口。这项决定意味着未来将会有更多的产品强制性地使用TYPE-C充电接口。 在这个背景下&#xf…

算法设计与分析 实验5 并查集法求图论桥问题

目录 一、实验目的 二、问题描述 三、实验要求 四、实验内容 &#xff08;一&#xff09;基准算法 &#xff08;二&#xff09;高效算法 五、实验结论 一、实验目的 1. 掌握图的连通性。 2. 掌握并查集的基本原理和应用。 二、问题描述 在图论中&#xff0c;一条边被称…

剑指西门子ABB施耐德,中国自动化公司杀入全球市场,业绩增长90%

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 更多的海量【智能制造】相关资料&#xff0c;请到智能制造online知识星球自行下载。 一提到工业自动化领域&#xff0c;西门子、施耐德、ABB这些…

vue-使用Worker实现多标签页共享一个WebSocket

文章目录 前言一、SharedWorker 是什么SharedWorker 是什么SharedWorker 的使用方式SharedWorker 标识与独占 二、Demo使用三、使用SharedWorker实现WebSocket共享 前言 最近有一个需求&#xff0c;需要实现用户系统消息时时提醒功能。第一时间就是想用WebSocket进行长连接。但…

植物神经紊乱小救星来啦!放松小技巧get√

哈喽&#xff0c;小伙伴们&#xff01;今天给大家带来一些超级实用的放松小技巧&#xff0c;特别适合那些时常感到植物神经紊乱&#xff0c;心情紧绷的亲人们哦&#xff01;&#x1f478; &#x1f340;首先&#xff0c;深呼吸大法&#xff01;每次感到紧张或者焦虑的时候&…

小试牛刀-Python生成solana Wallet公私钥

目录 1.编写目的 2.使用依赖 3.实现方法 3.1 Pynacl实现 3.2 ed25519实现 1.编写目的 在使用Python开发solana应用过程中,需要生成solana Wallet公私钥,以实现后续应用操作.这里将Python生成方法进行整理,方便日后的查阅,也能帮助到实现相关功能的朋友。 2.使用依赖 主要…

(十四)向量和矩阵

向量 标量&#xff1a;比如质量/温度/颜色等&#xff0c;没有方向&#xff0c;只有大小的量&#xff0c;称为标量 向量&#xff1a;拥有方向跟大小的物理量/数学量为向量&#xff0c;比如力/速度 向量特性&#xff1a; 1.向量有方向&#xff0c;没有位置 2.向量有大小&#x…

Linux的前世今生

Unix的起源和发展 1969年&#xff0c;AT&T贝尔实验室的Ken Thompson和Dennis Ritchie等人开发了Unix操作系统。Unix的设计理念强调小而简洁的工具&#xff0c;文本流和系统模块化&#xff0c;这些理念后来成为Linux开发的重要基础。1973年&#xff0c;Unix用C语言重新编写…

Angular进阶之九: JS code coverage是如何运作的

环境准备 需要用到的包 node 18.16.0# Javascript 代码编辑"babel/core": "^7.24.7","babel/preset-env": "^7.24.7","babel-loader": "^9.1.3",# 打包时使用的 module&#xff0c; 给代码中注入新的方法# http…

MySQL如何实现数据排序

根据explain的执行计划来看&#xff0c;MySQL可以分为索引排序和filesort 索引排序 如果查询中的order by字句包含的字段已经在索引中&#xff0c;且索引的排列顺序和order by子句一致&#xff0c;则可直接利用索引进行排序&#xff0c;由于索引有序&#xff0c;所以排序效率…

HTML5实现我的音乐网站源码

文章目录 作者&#xff1a;[xcLeigh](https://blog.csdn.net/weixin_43151418) 1.设计来源1.1 界面效果1.2 轮播图界面1.3 音乐播放界面1.4 视频播放界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作…

合合信息大模型“加速器”重磅上线

大模型技术的发展和应用&#xff0c;预示着更加智能化、个性化未来的到来。如果将大模型比喻为正在疾驰的科技列车&#xff0c;语料便是珍贵的“燃料”。本次世界人工智能大会期间&#xff0c;合合信息为大模型打造的“加速器”解决方案备受关注。 在大模型训练的上游阶段&…