硅谷仿制网易云小程序登录问题解决

引言:

尚硅谷视频中的登录拥挤问题,导致无法登录,所以,我去gitee上从新找了个别人搞好点网易云的api接口【也是比较出名的那个,不想用不行啊,我也试过很多方法都不行】

接口详解网址:网易云音乐 NodeJS 版 API (binaryify.github.io)

查找接口网址:NeteaseCloudMusicApi

 然后选一个,用git clone,剩下的轻车熟路了,但是你需要有git,然后连接上gitee,或者你去github找一样

关键来了:

别杠哈!我试过手机号密码登录,手机号验证码登录,都没有用,邮箱我账号没有绑定就不用了,最后发现只有二维码登录才行,可能你会觉得二维码登录在小程序奇奇怪怪的,但是没有办法,现在只能这样了。

做了二维码登录及其页面效果和js,我还保留着手机号登录的页面样式和js,用swiper组件包裹着,ui样式,尚硅谷的太丑了,我修改了一下

以下是完整代码,可以copy下来,或者去我主页下载-资源包 login 部分

login.wxml

<swiper class="container"><swiper-item><view class="title"><text>当前为二维码登录</text><text>从右向左滑后,可进行手机号和密码登录</text></view><view class="qrLogin"><image src="{{qrDefault}}" mode="" class="qrImg" /><view class="qrStatus">二维码状态:<text>{{qrStatus}}</text></view><button type="primary" bind:tap="handleQr">获取二维码</button></view></swiper-item><swiper-item><view class="title"><text>当前为手机号和密码登录</text><text>从左向右滑后,可进行二维码登录</text></view><form class="input-content" catchsubmit="handleSubmit"><view class="input-item"><input type="number" id="number" bindfocus="handleFocus" bindblur="handleBlur" maxlength="11" name="number" /><label class="tit" for="number" style="{{tit1}}">请输入手机号</label></view><view class="input-item"><input type="text" password="true" id="password" bindfocus="handleFocus" bindblur="handleBlur" maxlength="16" name="password" /><label class="tit" for="password" style="{{tit2}}">请输入密码</label></view><button class="confirm-btn" form-type="submit">登 录</button></form><view class="forget-section">忘记密码?</view><view class="register-section">还没有账号?<text>马上注册</text></view></swiper-item></swiper>

 login.wxss

/* pages/login/login.wxss */
.container {height: 100vh;color: #333333;
}.container swiper-item {box-sizing: border-box;padding: 0 5%;
}/*  */
.qrLogin {display: flex;flex-direction: column;align-items: center;
}.qrLogin image {width: 500rpx;height: 500rpx;border: 1rpx solid #979797;border-radius: 20rpx;
}.qrLogin .qrStatus {margin: 10rpx 0 60rpx;color: #979797;font-size: 28rpx;
}.qrStatus text {padding: 5rpx 15rpx;color: #edab3c;background-color: #fdf6ec;border: 1rpx solid #edab3c;border-radius: 7rpx;font-size: 25rpx;vertical-align: baseline;
}/*  */
.title {display: flex;flex-direction: column;padding: 120rpx 0 80rpx;letter-spacing: 3rpx;
}.title text:first-child {padding-bottom: 10rpx;font-weight: 600;font-size: 37rpx;
}.title text:last-child {font-size: 26rpx;color: #979797;
}.input-item {position: relative;margin-bottom: 70rpx;padding: 10rpx 5rpx;border-bottom: 1rpx solid #e0e0e0;
}.input-item .tit {position: absolute;top: 10rpx;left: 10rpx;transition: all .2s linear
}.confirm-btn {width: 100% !important;height: 84rpx;line-height: 84rpx;border-radius: 50rpx;background: #fc3a3a;color: #fff;font-size: 32rpx;padding: 0;
}/*  */
.forget-section {font-size: 28rpx;color: #4399fc;text-align: center;margin-top: 40rpx;
}/*  */
.register-section {position: absolute;left: 0;bottom: 50rpx;width: 100%;font-size: 28rpx;color: #606266;text-align: center;
}.register-section text {color: #4399fc;margin-left: 10rpx;
}

login.js

// pages/login/login.js
import request from '../../utils/request'
Page({/*** 页面的初始数据*/data: {// 做了个点击输入框,label移动的东西tit1: "",tit2: "",// 二维码状态qrDefault: 'https://img1.baidu.com/it/u=1629184190,3216022764&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',qrStatus: "未获取",// 手机号登录number: "",password: ""},// 验证登录状态async getLoginStatus(cookie = '') {let userInfo = await request("/login/status", {cookie,timestamp: Date.now()})wx.setStorageSync('userInfo', JSON.stringify(userInfo.data.profile))wx.setStorageSync('cookie', JSON.stringify(cookie))},// 二维码相关 【都要加时间戳,防止缓存】async handleQr() {// 1、获取 key let qrKey = await request("/login/qr/key", { timestamp: Date.now() })// 2、获取 二维码图片信息let qrCreate = await request("/login/qr/create", {key: qrKey.data.unikey,qrimg: true,timestamp: Date.now()})this.setData({qrDefault: qrCreate.data.qrimg,qrStatus: "当前已获取,等待扫码中"})// 3、扫描二维码let timer = setInterval(async () => {let qrCheck = await request("/login/qr/check", {key: qrKey.data.unikey,timestamp: Date.now()})// 判断扫码状态if (qrCheck.code === 800) {this.setData({qrStatus: '二维码已过期,请重新获取'})wx.showToast({title: '二维码已过期,请重新获取',icon: 'error'})clearInterval(timer)return;}if (qrCheck.code === 803) {// 这一步会返回cookieclearInterval(timer)await this.getLoginStatus(qrCheck.cookie);// 关闭所有页面,跳转到应用某页面,这样个人页在onLoad接受,只执行一次,不用再onshow 中执行多次wx.reLaunch({url: '/pages/personal/personal',})}}, 3000)},// 手机号登录相关handleFocus(e) {if (e.target.id == "number") {this.setData({tit1: "top:-30rpx; font-size:28rpx;"})} else if (e.target.id == "password") {this.setData({tit2: "top:-30rpx; font-size:28rpx;"})}},handleBlur(e) {// 内容为空,label位置就回去if (e.target.id == "number" && e.detail.value == "") {this.setData({tit1: ""})} else if (e.target.id == "password" && e.detail.value == "") {this.setData({tit2: ""})}},handleSubmit(e) {// console.log(e.detail.value); // {number: "11", password: "11"}let { number, password } = e.detail.valuethis.setData({number: number,password: password})/* 手机号验证1、空值;2、格式不正确;3、正确通过*/if (!number) {wx.showToast({title: '手机号不能为空',icon: 'none'})// 因为是异步任务,后面代码没有必要去执行return;}// 定义正则表达式let phoneReg = /^1(3|4|5|6|7|8|9)\d{9}$/if (!phoneReg.test(number)) {wx.showToast({title: '手机号格式错误',icon: 'none'})return;}// 判断密码不能为空if (!password) {wx.showToast({title: '密码不能为空',icon: 'none'})return;}},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {},/*** 生命周期函数--监听页面隐藏*/onHide() {},/*** 生命周期函数--监听页面卸载*/onUnload() {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh() {},/*** 页面上拉触底事件的处理函数*/onReachBottom() {},/*** 用户点击右上角分享*/onShareAppMessage() {}
})

request.js和config.js

// request.js配置服务器信息
import config from './config'export default (url, data = {}, method = "GET") => {return new Promise((resolve, reject) => {wx.request({url: config.host + url,data,method,success: (res) => {resolve(res.data)},fail: (err) => {reject(err)}})});
}/* config.js以后替换域名即可
*/
export default {host: "http://localhost:3000"
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python基础——池

池的介绍&#xff1a; 提前创建进程池&#xff0c;防止创建的进程数量过多导致系统性能受到影响&#xff0c;在系统执行任务时&#xff0c;系统会使用池中已经创建进程/线程&#xff0c;从而防止资源的浪费&#xff0c;创建的进程/线程可以让多个进程使用&#xff0c;从而降低…

TypeScript Array(九) 数组

1.TypeScript Array 数组 1.1. 描述 数组对象是使用单独的变量名来存储一系列的值。  &emsp比如&#xff0c;你现在有一组数据&#xff0c;存单独变量如下&#xff1a; var data1"Android"; var data2"Java"; var data3"Harmony";那如果有…

南昌市青山湖、滕王阁、洛阳路隧道FM调频广播集群通信调度系统应用案例

一、用户需求 青山湖隧道&#xff0c;是南昌市一条东西走向的城市主干道&#xff0c;隧道为双向6车道&#xff0c;长1070米&#xff0c;其中湖底暗埋段为550米&#xff0c;净高5.45米&#xff0c;两孔每孔净宽12.4米。 滕王阁隧道是南昌市沿江北大道与沿江中大道连通工程&#…

计算机网络实验二

目录 实验二 交换机的基本配置 1、实验目的 2、实验设备 &#xff08;1&#xff09;实验内容&#xff1a; &#xff08;2&#xff09;练习&#xff1a; 1.实验内容一&#xff1a;&#xff08;交换机的配置方式&#xff09; 2.实验内容二&#xff1a;&#xff08;交换机…

云打印怎么收费?云打印需要付费吗?

随着云打印概念的火热发展&#xff0c;很多有打印需求的App或者个人用户都想使用易绘创云打印服务。那么易绘创云打印怎么收费&#xff1f;云打印需要付费吗&#xff1f;今天就带大家来了解一下。 云打印怎么收费&#xff1f;云打印需要付费吗&#xff1f; 很多有打印需求的小…

正则表达式 与文本三剑客(sed grep awk)

一&#xff0c;正则表达式 &#xff08;一&#xff09;正则表达式相关定义 1&#xff0c;正则表达式含义 REGEXP&#xff1a; Regular Expressions&#xff0c;由一类特殊字符及文本字符所编写的模式&#xff0c;其中有些字符&#xff08;元字符&#xff09;不表示字符字面意…

EMQX 性能调优:TCP SYN 队列与 Accept 队列

在上一篇博客&#xff08;EMQX 性能调优&#xff1a;最大连接与文件描述符&#xff09;&#xff0c;我们深入研究了 MQTT 连接与文件描述符之间的关系&#xff0c;介绍了如何修改文件描述符相关的内核参数来突破默认的最大连接数量限制。 但你可能会发现&#xff0c;在某些情况…

Java 面向对象进阶 03 static 注意事项、重新认识main方法(黑马)

案例代码如下&#xff1a; 非静态的方法虚拟机会自带一个关键字&#xff0c;如下&#xff1a; 但是不能手动出来&#xff0c;它的类型就是当前类&#xff1b; 通过输出this&#xff0c;得到当前s1,s2 的地址&#xff1b; 所以在输出时会有隐藏的this&#xff0c;所以this所指向…

Redis -- 单线程模型

失败是成功之母 ——法国作家巴尔扎克 目录 单线程模型 Redis为什么这么快 单线程模型 redis只使用一个线程&#xff0c;处理所有的命令请求&#xff0c;不是说redis服务器进场内部真的就只有一个线程&#xff0c;其实也有多个线程&#xff0c;那就是处理网络和io的线程。 R…

MBR分区转换为GPT分区

这里有一个ecs-test用于测试MBR转换为GPT 新增一块数据盘 将数据盘以MBR分区格式分区 将整块磁盘以mbr形式分区 格式化&#xff0c;挂载等 上传文件&#xff0c;方便测试(以便后续转换格式类型&#xff0c;防止文件丢失) 取消挂载 将MBR转换为GPT 需先下载gdisk yum instal…

前端常见的栈溢出报错

什么是栈溢出&#xff1f; 在前端开发中&#xff0c;栈溢出是指JavaScript引擎执行代码时&#xff0c;调用栈&#xff08;call stack&#xff09;变得太大&#xff0c;超过了浏览器或JavaScript引擎所分配的栈空间&#xff0c;从而导致栈溢出错误。调用栈是一种数据结构&#x…

Spring-集成Web

一、引子 前面我们在Spring集成Junit中为读者引出了Spring善于集成其它框架的优势&#xff0c;而Spring项目不可能仅限于小范围的某个方法的测试&#xff0c;终究会落脚于Web项目上。于是&#xff0c;我们就从这里正式进入Spring集成Web的话题。由于笔者会从原生的Java Web开发…

@Test Annotation属性- dependsOnMethods属性

目录 语法 如果test1&#xff08;&#xff09;失败了怎么办&#xff1f;test2&#xff08;&#xff09;测试会发生什么&#xff0c;因为它依赖于test1&#xff1f; 如果我们在test1&#xff08;&#xff09;方法上不使用Test注释&#xff0c;但在test 2&#xff08;&#xf…

【产业实践】使用YOLO V5 训练自有数据集,并且在C# Winform上通过onnx模块进行预测全流程打通

使用YOLO V5 训练自有数据集,并且在C# Winform上通过onnx模块进行预测全流程打通 效果图 背景介绍 当谈到目标检测算法时,YOLO(You Only Look Once)系列算法是一个备受关注的领域。YOLO通过将目标检测任务转化为一个回归问题,实现了快速且准确的目标检测。以下是YOLO的基…

B2119 删除单词后缀

网址如下&#xff1a; B2119 删除单词后缀 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 算是找了个操作字符串的题来做 可以说C的string类确实是好用&#xff0c;但是还是不够熟悉&#xff0c;我不清楚怎么删去string类的后面几个字符 用C的常规做法是在相应地点设\0&…

校园二手交易小程序|基于微信小程序的闲置物品交易平台设计与实现(源码+数据库+文档)

校园二手交易小程序目录 目录 基于微信小程序的闲置物品交易平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、商品信息管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕…

R语言基础学习-02 (此语言用途小众 用于数学 生物领域 基因分析)

变量 R 语言的有效的变量名称由字母&#xff0c;数字以及点号 . 或下划线 _ 组成。 变量名称以字母或点开头。 变量名是否正确原因var_name2.正确字符开头&#xff0c;并由字母、数字、下划线和点号组成var_name%错误% 是非法字符2var_name错误不能数字开头 .var_name, var.…

蓝桥杯备战——11.NE555测频

1.分析原理图 我们可以看到&#xff0c;上图就是一个NE555构建的方波发生电路&#xff0c;输出方波频率1.44/2(R8Rb3)C,如果有不懂NE555内部结构&#xff0c;工作原理的&#xff0c;可以到B站学习。实在不懂仿真也行&#xff0c;比如我下面就是仿真结果&#xff1a; 然后就是下…

与数组相关经典面试题

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

su导入3d模型为什么不圆滑---模大狮模型网

在将SU(SketchUp)模型导入到其他3D软件中时&#xff0c;可能会遇到模型没有圆滑的情况。这可能是由于以下原因&#xff1a; 模型导出设置不正确&#xff1a;在导出SU模型时&#xff0c;需要确保正确选择导出设置。例如&#xff0c;在导出为.obj格式时&#xff0c;需要选择正确的…