uni-app微信小程序获取手机号授权登录(复制即用,js完成敏感数据对称解密,无需走服务端处理)

这篇具有很好参考价值的文章主要介绍了uni-app微信小程序获取手机号授权登录(复制即用,js完成敏感数据对称解密,无需走服务端处理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、示例

二、具体实现说明


一、示例

uni-app微信小程序获取手机号授权登录(复制即用,js完成敏感数据对称解密,无需走服务端处理)

  • 获取到的手机号

uni-app微信小程序获取手机号授权登录(复制即用,js完成敏感数据对称解密,无需走服务端处理)

二、具体实现说明

属性说明
属性名 说明 生效时机
@getphonenumber 获取用户手机号回调 open-type="getPhoneNumber"
  •  按钮写法
<template>
	<view class="login">
		<view class="content">
			<button class="button_wx" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
				<u-icon name="weixin-fill" color="#FFFFFF" size="50"></u-icon>
				<text class="button_text">授 权 登 录</text>
			</button>
		</view>
	</view>
</template>
接口说明
接口 说明
wx.login() 获取登录凭证(code),通过凭证进而换取用户登录态信息
auth.code2Session 登录凭证校验
参数说明
参数 说明
code 用户登录凭证(有效期五分钟),只能消费一次
WXBizDataCrypt.js 用于对称解密微信接口返回的敏感数据(底部标红处有下载地址
appid 微信公众号平台申请的AppID(小程序ID)
secret 微信公众号平台申请的AppSecret(小程序密钥)
js_code 登录时获取的 code
grant_type 授权类型(只需填写 authorization_code)
返回值说明
返回值 说明
openid 用户唯一标识
session_key 会话密钥
unionid 用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回,详见 UnionID 机制说明
errcode 错误码
errmsg 错误信息
encryptedData 包括敏感数据在内的完整用户信息的加密数据
iv 加密算法的初始向量,详见 用户数据的签名验证和加解密
errcode的合法值
说明
-1 系统繁忙,此时请开发者稍候再试
0 请求成功
40029 code 无效
45011 频率限制,每个用户每分钟100次
40226 高风险等级用户,小程序登录拦截 。风险等级详见用户安全解方案
  • 解密算法js下载

        下载地址:WXBizDataCrypt.js 文章来源地址https://www.toymoban.com/news/detail-497804.html

  •  具体实现(代码复制即用)
<script>
	import WXBizDataCrypt from "@/utils/WXBizDataCrypt.js";//必要解密js
	let that;
	export default {
		data() {
			return {
				appid: '填写你自己的appid',//必要
				secret: '填写你自己的secret',//必要
				code: '',//临时登录凭证
			};
		},
		mounted() {
			that = this;
			that.isLogin();
			that.getWxCode();
		},
		methods: {
			isLogin() {
				try {
					const phoneNumber = uni.getStorageSync('phoneNumber');
					if (phoneNumber) {//自动登录
						// 业务登录方法

					}
				} catch (e) {
					// error
				}
			},
			// 获取临时登录凭证
			getWxCode() {
				wx.login({
					success: res => {
						console.log('获取用户临时登录凭证code:', res.code);
						that.code = res.code;
					}
				})
			},
			// 获取手机号的回调函数
			getPhoneNumber(e) {
				const {
					errMsg,
					encryptedData,
					iv
				} = e.detail;
				if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
					console.log('用户拒绝授权=>');
				} else {
					console.log('用户同意授权=>', errMsg);
					console.log('用户手机号加密数据:', e.detail.encryptedData);
					console.log('加密算法的初始向量:', iv);
					console.log('开始校验登录凭证code=>');
					//登录凭证校验,返回用户唯一标识、会话密钥
					uni.request({
						url: 'https://api.weixin.qq.com/sns/jscode2session',//微信登录凭证校验接口
						data: {
							appid: that.appid,
							secret: that.secret,
							js_code: that.code,
							grant_type: 'authorization_code'
						},
						success(sessionRes) {
							console.log('登录凭证code校验成功=>');
							const {
								openid,
								session_key
							} = sessionRes.data;
							console.log('用户唯一标识:', openid);
							console.log('会话密钥:', session_key);
							console.log('开始解密用户手机号=>');
							var pc = new WXBizDataCrypt(that.appid, session_key);
                            //解密用户数据
							var data = pc.decryptData(encryptedData, iv);
							if (data) {
								console.log('用户手机号解密成功: ', data.phoneNumber);
								uni.setStorageSync("phoneNumber", data.phoneNumber);
								// 业务登录方法
								// that.startLogin(data.phoneNumber);

							}
						}
					});
				}
			},
		}
	}
</script>

<style lang="scss" scoped>
	.login {
		min-height: 100vh;
	}

	.content {
		margin-top: 500rpx;
	}

	.button_wx {
		background-color: #07c160;
		display: flex;
		justify-content: center;
		align-items: center;
		color: #FFFFFF;
		font-size: 30rpx;
		width: 601rpx;
		height: 100rpx;
		border-radius: 2.5rem;
	}

	.button_text {
		font-size: 20px;
		margin-left: 0.5em;
	}
</style>

到了这里,关于uni-app微信小程序获取手机号授权登录(复制即用,js完成敏感数据对称解密,无需走服务端处理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app微信小程序结合腾讯地图获取定位导航以及城市选择器

    目录 第一步:登录小程序公众平台==设置==第三方设置  第二步:登录腾讯地图申请属于自己小程序的key  第三步:找到腾讯地图的插件​​​​​​​  第四步:添加插件与允许授权  第五步:使用    腾讯地图后台:https://lbs.qq.com/dev/console/application/mine    添加key,授权使

    2023年04月12日
    浏览(56)
  • 小程序阻止手机自带的滑动返回退出事件(uni-app,微信小程序,page-container)

    1、使用page-container前先在pages.json配置(重点!) 2、在页面中配置 @touchstart.native和@touchmove.native是用于遮罩层滑动的监听事件 关于page-container 的一些属性 详细可以按照官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/page-container.html

    2024年02月11日
    浏览(31)
  • 微信小程序获取openid,微信小程序获取手机号

    工具类

    2024年02月16日
    浏览(34)
  • 在uni-app中使用手机号一键登录

    https://dev.dcloud.net.cn/uniLogin 开通一键登录服务, 获取关键最关键的两个参数  ApiKey  和  ApiSecret 真机调试无需添加应用,如需打包使用请添加。一键登录应用ID为离线打包时配置的appid https://unicloud.dcloud.net.cn/home      新建云函数后会有一个index.js【 getPhoneNumber/index.js 】生成,

    2023年04月23日
    浏览(23)
  • 微信小程序获取手机号

    1、先新建vue页面  打开看到页面是下图 在method定义方法    源码: node.js文件下载解压后启动node app.js打开服务器即可 点击下载

    2024年02月02日
    浏览(36)
  • WebStorm开发uni-app ,用vue2实现手机APP(apk) + 微信小程序多端项目开发方案

    我们主要分析了如下小程序开发框架,主要包括: 框架 技术栈 案例 微信小程序 支付宝小程序 百度小程序 头条小程序 H5 App uni-app Vue 丰富 ⭕ ⭕️ ⭕️ ⭕ ⭕️ ⭕ Taro React 丰富 ⭕ ⭕ ⭕ ⭕ ⭕ ⭕ wepy Vue 丰富 ⭕ ❌ ❌ ❌ ❌ ❌ mpvue Vue 丰富 ⭕ ❌ ❌ ❌ ⭕️ ❌  首先,就要排

    2024年02月08日
    浏览(45)
  • 微信小程序:登录授权,根据手机号获取凭证,获取用户手机号

    1.微信小程序授权 controller 层代码 wxUtils 工具类 2.微信小程序,用户手机号获取 微信小程序,根据code(code为手机号获取凭证)获取用户加密手机号 获取用户手机号方法

    2024年02月14日
    浏览(42)
  • 【uni-app】UniApp实现微信小程序中拨打手机电话和长按加微信客服好友(完整代码示例)

    UniApp实现微信小程序中拨打手机电话和长按加微信客服好友(完整代码示例)

    2024年02月11日
    浏览(40)
  • 微信小程序:获取用户手机号(前端)

    获取手机号的开发过程可以分为三部分:微信前端设置,微信js文件编写,服务器端程序开发. 其中微信前端最为简单,在获取手机号的过程中我们必须经过用户授权,在wxml文件中加入如下代码: 然后我们需要编写js文件,当用户允许获取手机号后调用相关逻辑,将手机号加密信息发

    2024年02月06日
    浏览(40)
  • 企业微信小程序获取手机号?

    一、确定小程序是开发企业内部应用,还是开发第三方应用。  如果是开发企业内部应用,也就是应用自建的可以使用   wx.qy.getMobile 这个api 去获取手机号 wx.qy.getMobile 调用前提: 1、必须先调用过wx.qy.login,且session_key未过期,开发者可调用checkSession 检查当前登录态( 需要

    2024年02月07日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包