小程序 【头像昵称填写能力】使用

  • 引言
  • 【头像昵称填写能力】使用方法
  • 页面使用到的封装方法
    • asyncWx.js 文件
    • replace.js 文件
  • 注意

引言

由于小程序在不久之后将对 getUserProfile 接口进行回收,届时将无法获取用户的头像以及昵称,只能使用【头像昵称填写能力】的方法获取,本文章使用的是uniapp,同时适用于原生小程序

【头像昵称填写能力】使用方法

// 创建页面
<template><view class="info-set"><button class="avatar-btn" open-type="chooseAvatar" @chooseavatar="changeAvatar"><img :src="avatar" class="avatar-img" /></button><form @submit="formSubmit"><view class="username-content"><view class="user-title">昵称</view><input class="user-input" type="nickname" name="input" placeholder="请输入昵称" /></view><button class="submit-btn" formType="submit">提交</button></form></view>
</template><script>
import { showToast, uploadFile } from '@/utils/asyncWx.js';
import { isHttpOrHttps, randomString } from '@/utils/replace.js';
// 此方法是项目获取用户信息方法,根据自己项目进行替换
import { getStorageUserInfo, setStorageUserInfo } from '@/utils/storage.js';
// 此方法是项目获取oss参数接口,根据自己项目进行替换
import { getOssPolicy } from '@/api/ossUpload';
export default {data() {return {// 上传oss所需签名uploadOssPolicy: {},userInfo: getStorageUserInfo(),avatar: getStorageUserInfo().avatar};},methods: {changeAvatar(e) {this.avatar = e.detail.avatarUrl;},async formSubmit(e) {// 后缀名const suffix = this.avatar.split('.').pop();// 图片的正式路径(项目只需要上传半路径,因此此路径不包含基准路径)const imgRelativePath = this.uploadOssPolicy.dir + '/' + randomString(6, suffix);const imageType = /\.(jpg|jpeg|png|GIF|JPG|PNG)$/.test(imgRelativePath);if (!this.avatar || !imageType) return showToast({ title: '请上传图片或正确图片' });if (!e.detail.value.input) return showToast({ title: '请输入昵称' });// oss上传参数,根据自己项目进行替换const uploadData = {name: imgRelativePath,key: imgRelativePath,policy: this.uploadOssPolicy.policy,OSSAccessKeyId: this.uploadOssPolicy.accessKeyId,signature: this.uploadOssPolicy.signature,success_action_status: '200',callback: this.uploadOssPolicy.callback};// 上传图片所有参数,属性值根据自己项目进行替换const uploadImagesData = {url: this.uploadOssPolicy.host,filePath: this.avatar,fileType: 'image',name: 'file',formData: uploadData};// 由于图片路径为临时路径,因此需要上传至项目服务器转化为正式路径await uploadFile(uploadImagesData);const data = {avatar: imgRelativePath,nickname: e.detail.value.input};// 发送信息修改请求...this.userInfo.avatar = isHttpOrHttps(imgRelativePath);this.userInfo.nickName = e.detail.value.input;setStorageUserInfo(this.userInfo);}},onLoad() {getOssPolicy().then(res => {this.uploadOssPolicy = res.data;});}
};
</script><style lang="scss" scoped>
.info-set {.avatar-btn {width: 200rpx;height: 200rpx;margin: 50rpx auto;padding: 0;background: none;border-radius: 50%;.avatar-img {width: 100%;height: 100%;}}.username-content {display: flex;align-items: center;padding: 20rpx;border-top: 1px solid #f5f5f5;border-bottom: 1px solid #f5f5f5;.user-title {width: 20%;height: 80rpx;line-height: 80rpx;font-size: 28rpx;}.user-input {flex: 1;height: 80rpx;line-height: 80rpx;padding: 0 28rpx;color: #333;font-size: 28rpx;}}.submit-btn {margin: 80rpx 24rpx 0;color: #fff;font-size: 32rpx;background-color: #333;border-radius: 4rpx;box-sizing: border-box;}
}
</style>

页面使用到的封装方法

asyncWx.js 文件

/*** 消息提示框*/export const showToast = ({ title }) => {return new Promise((resolve, reject) => {uni.showToast({title: title,icon: 'none',duration: 2000,success: (result) => {resolve(result)},fail: (err) => {reject(err)}});})
}// 上传资源
export const uploadFile = (data) => {uni.showLoading({ title: "正在上传..." });return new Promise((resolve, reject) => {uni.uploadFile({url: data.url,filePath: data.filePath,fileType: data.fileType,name: data.name,header: {'content-type': 'multipart/form-data'},formData: data.formData,success: (res) => {resolve(res)},fail: (err) => {reject(err)},complete: () => {uni.hideLoading();}});})
}

replace.js 文件

// 拼接图片视频路径
export const isHttpOrHttps = (url) => {const reg = /http[s]{0,1}:\/\/([\w.]+\/?)\S*/;if (url) {if (reg.test(url)) {return url} else {// process.uniEnv.UNI_BASE_OSS_IMAGES 是 oss 的基准路径return process.uniEnv.UNI_BASE_OSS_IMAGES + url}} else {return;}
};// 随机生成文件名
export const randomString = (len, suffix) => {const chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz12345678';const maxPos = chars.length;let fileName = '';for (let i = 0; i < len; i++) {fileName += chars.charAt(Math.floor(Math.random() * maxPos));}return fileName + '_' + new Date().getTime() + '.' + suffix;
};

注意

【头像昵称填写能力】在用户登录成功之后进行或者未登录前进行都可以

此方法是查询资料以及根据官方示例作出,如有错误,欢迎各位大神指出

小程序 【头像昵称填写能力】使用相关推荐

  1. 微信小程序头像昵称填写能力

    1.基本介绍 微信小程序获取头像昵称的能力,最近又进行了一次调整,如果没有记错这是今年第三次调整了,每次调整每个开发者心中我相信都跟我一样,万马奔腾...今天写个demo体验下实际效果如何. 详细信息 ...

  2. 微信小程序头像昵称填写功能

    自 2022 年 10 月 25 日 24 时后(以下统称 "生效期" ),用户头像昵称获取规则将进行如下调整: 自生效期起,小程序 wx.getUserProfile 接口将被收 ...

  3. 2022年12月份最新小程序头像昵称获取方式

    小程序头像昵称获取方式又双叒改变了,自小程序基础库2.21.2开始,小程序开始废弃wx.getUserProfile接口,新提交的小程序从此接口获取的头像昵称均变为默认头像和昵称,这对于一个开发了几百 ...

  4. 小程序授权头像昵称改为头像昵称填写能力详解

    自 2022 年 10 月 25 日 24 时后,微信小程序不再能通过授权直接获取到用户的微信头像和昵称:为了保护用户隐私,改成 头像昵称填写能力 ,获取头像昵称的流程变复杂了. 官方公告 头像昵称获 ...

  5. 微信小程序获取用户头像和昵称(头像昵称填写能力)

    开放能力调整公告 总体来说就是通过按钮来授权获取用户基础信息的能力都没啦(wx.getUserProfile,wx.getUserInfo都不行了),都要使用新版本的 [头像昵称填写能力]啦. 小程序 ...

  6. 小程序用户头像昵称,微信头像昵称填写能力 uniapp和原生小程序

    官方调整公告链接:小程序用户头像昵称获取规则调整公告 | 微信开放社区 使用方法 头像选择 需要将 button 组件 open-type 的值设置为 chooseAvatar,当用户选择需要使用的头 ...

  7. 小程序头像和昵称填写能力用底部弹框界面实现

    最近,微信小程序又更新了文档,关于获取头像和昵称需要进行适配. https://developers.weixin.qq.com/community/develop/doc/00022c683e8a8 ...

  8. 微信小程序_头像昵称填写

    头像昵称填写 前言 从基础库 2.21.2 开始支持 当小程序需要让用户完善个人资料时,可以通过微信提供的头像昵称填写能力快速完善. 根据相关法律法规,为确保信息安全,由用户上传的图片.昵称等信息微信 ...

  9. 微信小程序获取用户信息(getUserProfile接口回收后)——通过头像昵称填写获取用户头像和昵称

    背景:最近在用uniapp写微信小程序授权登录的时候,发现项目在微信开发者工具中调试是正常的,但是在真机运行时,返回的用户数据中昵称变成了微信用户,头像变成了默认的灰底头像.接着去百度了一下发现出现这 ...

最新文章

  1. 北大博士干了半年外卖骑手,写出AI伦理论文登上顶刊,“系统知道一切”
  2. VTK:标签轮廓用法实战
  3. setHeadAndPropagate
  4. 三星note3 android4.3,三星N9002 (Note3联通双卡版 Android4.3)一键救砖教程,轻松刷回官方系统...
  5. 帆软报表(FineReport) 的初步学习和使用
  6. [Python] Ubuntu 16.04 上安装 python3.7 和 pip 并配置虚拟环境
  7. HDU-1501-Zipper
  8. php为什么发送不到sql,PHP-为什么我的Ajax无法执行我的SQL查询?
  9. java通过smtp发送电子邮件
  10. InstallShield 2011新功能试用(7)- 新增加的InstallShield Prerequisites
  11. java二路归并排序算法,Java排序算法总结之归并排序
  12. 图像处理中的数学原理归类
  13. 电动车、船等 机械结构DIY
  14. principal java_CAS 单点登录服务端 如何获取到principal
  15. Java代码加密混淆工具有哪些?
  16. C++中使用placement new
  17. 各省简称[转载----作为常识存储]
  18. 零线和地线的区别,示波器如何测量市电?
  19. 解决 编译错误 对‘sem_init’未定义的引用 collect2: error: ld returned 1 exit status builtin: recipe for
  20. win10下vs2013配置opencv2.4.11+测试代码

热门文章

  1. Windows XP/2003系统服务优化
  2. hdoj 2199 Can you solve this equation? 【二分枚举】
  3. 耐克中国物流中心三期在江苏太仓落成和运营
  4. Python调用百度地图api路径查询
  5. 什么是大数据的ETL
  6. 团队作业 #1 —— 采访
  7. B2C电商模式的现状是怎样的?有什么优劣势?
  8. 关于浅拷贝、深拷贝的探究
  9. 【CSS3】---- 纯 css 控制 html5旋转音乐图标,控制背景音乐
  10. 嵌入式系统开发设计---嵌入式系统开发设计