微信小程序登录适配(2023年最新)

这篇具有很好参考价值的文章主要介绍了微信小程序登录适配(2023年最新)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

众所周知,微信小程序开发文档更新那不是一般的快,开发者都来不及去适配😭

今天就来说说登录这一块到底改了哪些地方,以及怎么去适配

我们先来看看更改了哪些?

先放小程序登录文档这块更新的公告:https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01

大概的调整说明

微信小程序登录适配(2023年最新)

大概意思是登录api不会返回微信头像跟昵称了,现在默认返回灰色头像以及"微信用户"昵称,需要开发者加一个编辑个人信息的页面,需要注意的是最新更新"头像昵称填写能力"基础库2.21.0版本一下不支持需要开发者向下兼容。官方给的登录适配示例如下:

微信小程序登录适配(2023年最新)

现在试试该怎么适配?

其实很简单,上demo😁

demo首页

微信小程序登录适配(2023年最新)

一般个人中心展示的用户信息不需要动所以不需要加啥东西,加个进入个人信息按钮或图标就行了

首页源码:

<template>
    <view class="content">
        <image class="avatar" :src="userInfo.avatarUrl" mode="aspectFill"></image>
        <view class="user-box">
            <view class="title">用户信息</view>
            <view class="info">
                <view style="max-width: 300rpx;white-space: nowrap;margin-bottom: 10rpx;">头像:{{userInfo.avatarUrl}}</view>
                <view>姓名:{{userInfo.nickName}}</view>
            </view>
        </view>
        <view class="setting" @click="tiInfo">
            <icon :type="'info'" size="26" />
        </view>
        <!-- 最新版登录方法 -->
        <button v-if="canIUseGetUserProfile" type='primary' lang="zh_CN" @click="getUserProfile">getUserProfile</button>
        <!-- 老版本登录方法 -->
        <button v-else type='primary' open-type="getUserInfo" lang="zh_CN" @getuserinfo="bindGetUserInfo">
        getuserinfo</button>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                //用来判断用哪个登录
                canIUseGetUserProfile: false,
                userInfo: {
                    avatarUrl: '/static/logo.png',
                    nickName: '--',
                }
            }
        },
        onLoad() {
            //如果手机支持最新版登录就用新方法
            if (uni.getUserProfile) {
                this.canIUseGetUserProfile = true
            }
            
        },
        onShow() {
            if(uni.getStorageSync("userInfo")){
                this.userInfo = uni.getStorageSync("userInfo")
            }
        },
        methods: {
            //老版登录接口(不再弹出登录弹框)
            bindGetUserInfo(e) {
                if (e.detail.userInfo) {
                    //业务逻辑
                    
                }
            },
            // 弹出登录弹框(新版)
            getUserProfile() {
                //推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息                                              均需用户确认
                // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
                uni.getUserProfile({
                    desc: '用于获取您的个人信息', // s声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
                    success: res => {
                        //业务逻辑
                        this.userInfo = res.userInfo
                        uni.setStorageSync("userInfo",this.userInfo)
                    }
                })
            },
            //去完善用户信息
            tiInfo() {
                uni.navigateTo({
                    url: "/pages/info/info"
                })
            }
        }
    }
</script>

<style lang="less" scoped>
    .content {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;

        .avatar {
            height: 200rpx;
            width: 200rpx;
            margin-top: 200rpx;
            margin-left: auto;
            margin-right: auto;
            margin-bottom: 50rpx;
            border-radius: 50%;
        }

        .user-box {
            display: flex;
            flex-direction: column;
            justify-content: center;

            .title {
                display: flex;
                justify-content: center;
                margin-bottom: 20rpx;
                font-size: 36rpx
            }

            .info {
                font-size: 30rpx;
                color: #8f8f94;
                margin-bottom: 10rpx;
            }
        }
    }

    .setting {
        position: absolute;
        top: 20rpx;
        right: 20rpx;
    }
</style>

demo 个人信息页

微信小程序登录适配(2023年最新)

这里button获取头像跟input获取昵称标签,开发者可以根据自身小程序的登录逻辑做向下兼容版本的处理(比如基础库版本小于等于2.21.0那就隐藏这些标签走原先的逻辑就行)

个人信息页源码:文章来源地址https://www.toymoban.com/news/detail-503888.html

<template>
    <view class="content">
        <view class="info">
            <form @submit="formSubmit">
                <view class="item">
                    <text>头像</text>
                    <!-- open-type="chooseAvatar"是最新加的属性用于获取微信头像 @chooseavatar是获取头像的回调-->
                    <button open-type="chooseAvatar" @chooseavatar="bindchooseavatar">
                        <image :src="userInfo.avatarUrl" mode="aspectFill"></image>
                    </button>
                </view>
                <view class="item">
                    <text>昵称</text>
                    <!-- type="nickname"是最新加的属性用于获取微信昵称 @nicknamereview是校验昵称是否违规-->
                    <input :value="userInfo.nickName" @nicknamereview="bindnicknamereview" name="nickName"
                        type="nickname" class="name" placeholder="请输入昵称">
                </view>
                <view class="" style="margin: 15rpx 0 40rpx 10rpx;color: #888;font-size: 26rpx;">昵称限2~32个字符,一个汉字为2个字符
                </view>
                <button class="btn" type="primary" form-type="submit">提交</button>
            </form>
        </view>
    </view>
</template>

<script>
    function compareVersion(v1, v2) {
      v1 = v1.split('.')
      v2 = v2.split('.')
      const len = Math.max(v1.length, v2.length)
    
      while (v1.length < len) {
        v1.push('0')
      }
      while (v2.length < len) {
        v2.push('0')
      }
    
      for (let i = 0; i < len; i++) {
        const num1 = parseInt(v1[i])
        const num2 = parseInt(v2[i])
    
        if (num1 > num2) {
          return 1
        } else if (num1 < num2) {
          return -1
        }
      }
    
      return 0
    }
    const version = wx.getAppBaseInfo().SDKVersion
    export default {
        data() {
            return {
                userInfo: {
                    avatarUrl: '/static/logo.png',
                    nickName: '',
                }
            }
        },
        onLoad() {
            if (compareVersion(version, '2.21.0') >= 0) {
              console.log(compareVersion(version, '2.21.0'),"当前2.21.0大于此版本");
            } else {
              // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
              wx.showModal({
                title: '提示',
                content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。',
                showCancel: false,
                success: res=>{
                    if(res.confirm){
                        uni.navigateBack({
                            data: 1
                        })
                    }
                }
              })
            }
            if (uni.getStorageSync("userInfo")) {
                this.userInfo = uni.getStorageSync("userInfo")
            }
        },
        methods: {
            //获取昵称回调
            bindnicknamereview(e) {
                console.log(e);
                if (e.detail.pass) {
                    //处理逻辑
                }
            },
            //获取头像回调
            bindchooseavatar(e) {
                console.log(e.detail.avatarUrl);
                this.userInfo.avatarUrl = e.detail.avatarUrl
                uni.setStorageSync("userInfo", this.userInfo)
            },
            //提交事件
            formSubmit(e) {
                this.userInfo.nickName = e.detail.value.nickName
                if (this.userInfo && this.userInfo.avatarUrl && this.userInfo.nickName) {
                    console.log(this.userInfo, '用户表单信息');
                    uni.setStorageSync("userInfo", this.userInfo)
                    uni.showToast({
                        icon: 'success',
                        duration: 1500,
                        title: '保存成功!'
                    })
                } else {
                    uni.showToast({
                        icon: 'error',
                        duration: 1500,
                        title: '请填写完整!'
                    })
                }
            }
        }
    }
</script>

<style lang="less" scoped>
    .content {
        .info {
            .item {
                display: flex;
                justify-content: space-between;
                align-items: center;
                padding: 20rpx 20rpx;
                border-bottom: 1rpx solid #ebebeb;
                height: 70rpx;

                button {
                    margin: 0;
                    background: none;
                    padding: 0;
                    height: auto;
                    line-height: 1;

                    image {
                        width: 70rpx;
                        height: 70rpx;
                        border-radius: 50%;
                    }
                }

                button::after {
                    background: none !important;
                    border: 0;
                }

                button .button-hover {
                    background: none !important;
                    color: none;
                }

                .name {
                    width: 170rpx;
                    flex-flow: row-reverse;
                }
            }
        }

        .btn {
            width: 80%;
            border-radius: 60rpx;
        }
    }
</style>

到了这里,关于微信小程序登录适配(2023年最新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • uniapp微信小程序最新登录获取头像、昵称

    由于微信官方wx.getUserProfile 接口的回收,以后不能通过wx.getUserProfile来返回用户信息,只能自己手动获取用户头像和昵称的信息。  针对此问题有以下解决方法: 在点击登录时用一个弹窗设置头像和昵称,如图:  使用button设置open-type=\\\"chooseAvatar\\\"来获取头像,至于button更多的效

    2024年02月11日
    浏览(36)
  • 最新版微信小程序授权登录(自定义头像昵称)

            根据官方微信小程序开发关于登录授权API的调整,自 2022年10月25日起有关API接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。(如下图所示) ​ ​ ​ ​ button标签中将open-type=\\\"chooseAvatar\\\"是用来设置用户头像,并且获得一个临时路径。 js代

    2024年02月12日
    浏览(44)
  • 2023年最新微信小程序抓包教程

    01 开门见山 隔一个月发一篇文章,不过分。 首先回顾一下《微信绑定手机号数据库被脱库事件》,我也是第一时间得知了这个消息,然后跟踪了整件事情的经过。下面是这起事件的相关截图以及近日流出的一万条数据样本: 个人认为这件事也没什么,还不如关注一下之前

    2023年04月20日
    浏览(33)
  • uniapp 微信小程序最新隐私弹窗更新方案,更新后无法登录问题解决方案

    uni-popup ref=\\\"popusAuthorization\\\" type=\\\"center\\\" :maskClick=\\\"false\\\" view class=\\\"contentview\\\" view class=\\\"title\\\"隐私保护指引/view view class=\\\"des\\\" @click=\\\"openPrivacyContract\\\" 在使用当前小程序服务之前,请仔细阅读text style=\\\"color: #07c160;\\\"{{privacyContractName}}/text。如你同意{{privacyContractName}},请点击“同意”开始使

    2024年02月09日
    浏览(39)
  • 微信小程序导入Vant Weapp ui组件库2023年最新版

    写这篇文章的原因是Vant Weapp的官方文档快速上手是有一定的问题的,没错,我就是那个试错的人,弄了一下午才发现问题所在,所以写了一篇正确的导入教程。 第一步:在项目所在目录打开控制台 第二步:查看自己电脑npm的版本,如果有会有版本号显示,没有则需要去下载

    2024年02月09日
    浏览(48)
  • 小程序源码:最新掌上题库微信小程序源码下载,修复登录接口,支持在线考试,自定义导入考题

    这是一款题库微信小程序源码 支持积分商城、自定义试题及导入、知识点分类、模式试题考试、流量主等 首页模块:专项刷题、题型刷题、乱序刷题、我的收藏、我的错题、未作习题、刷知识点、考前必背 另外还有更多功能就不一一说明了 该小程序支持商户收益还有流量主

    2024年02月09日
    浏览(75)
  • 微信小程序登录与注册(没有连接数据库)(2023年3月31日)

    提示:以下是本篇文章正文内容,下面案例可供参考 在登录表单里,输入账号、密码进行登录,在账号、密码输入框里都有友好的提示信息;登录按钮 默认是灰色不可用状态,只有输入内容后,才会变为可用状态;在登录按钮的下面提供手机快速注 册、企业用户注册、找回

    2024年02月08日
    浏览(45)
  • 2023年最新微信小程序获取用户openid、头像昵称的填写能力和方法原生写法

    大家好,下面是我身为小白分享给小白哈, 不懂就问相互学习共同进步! 亲测自用原生代码,感谢大神指点赐教鼓励勿喷; 只需9个一键复制粘贴步骤一气呵成; 先来 本文最终主要实现效果 : 获取微信小程序用户头像昵称的填写能力和方法原生写法 一:先捋一捋思路逻辑

    2024年02月08日
    浏览(70)
  • 2023年最新前端面试题汇总大全二(含答案超详细,Vue,TypeScript,React,微信小程序,Webpack 汇总篇)-- 持续更新

    HTML篇 CSS篇 JS篇 Vue篇 TpeScript篇 React篇 微信小程序篇 前端面试题汇总大全(含答案超详细,HTML,JS,CSS汇总篇)-- 持续更新 1. 谈谈你对MVVM开发模式的理解? MVVM是一种简化用户界面的 实践驱动编程方式 。在当前主流的前后端分离的开发模式中,MVVM模式的优越性日益体现,相较

    2024年02月10日
    浏览(52)
  • 【微信小程序】屏幕适配

    在网页中一般是使用 rem 单位,它能够根据html的字号大小自动改变尺寸,开发者可以动态的计算屏幕尺寸,然后根据屏幕大小的不同设置html的字号 小程序解决适配使用 rpx 单位,它能够根据屏幕大小自动进行转换。 每一个机型的宽度和高度都不一样,只需要写rpx自动会折算

    2024年03月08日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包