1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 最新微信小程序获取用户openid 头像昵称的填写能力和方法原生写法

最新微信小程序获取用户openid 头像昵称的填写能力和方法原生写法

时间:2023-01-24 22:31:00

相关推荐

最新微信小程序获取用户openid 头像昵称的填写能力和方法原生写法

大家好,下面是我身为小白分享给小白哈,

不懂就问相互学习共同进步!

亲测自用原生代码,感谢大神指点赐教鼓励勿喷;

只需9个一键复制粘贴步骤一气呵成;

先来本文最终主要实现效果

获取微信小程序用户头像昵称的填写能力和方法原生写法

一:先捋一捋思路逻辑:

1:获取之前有个环节是wx.checkSession先自动判断缓存里

有没用户之前的信息session_key有没过期,

没有或者过期就执行下一步;

2:用获取用户返回的code,

然后配合服务器后端wx.request获取返回用户openid,(后端写法可以关注找我要);

3:返回有了openid即用户唯一标识可以定义全局和存缓存后续更新用户相关信息用

4:编辑个人中心页面 和跳转用户信息获取授权页

二:开码:

1.先在小程序文件包目录中新建image文件夹,

然后将下面的图片命名为avatarUrl作为默认头像放进/image文件夹中初始化备用,

图片链接:/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0

2.在app.js页中一键复制下面代码粘贴:

App({data: {},userInfo:{nickName:'',avatarUrl:''},globalData:{openid:''},onLaunch: function () {let userInfo = wx.getStorageSync('userInfo');if (!userInfo){wx.setStorage({key:'userInfo',data:{avatarUrl:'/image/avatarUrl.png'}})}wx.checkSession({fail () {wx.login({success: (res) => {const {code} = res.codewx.setStorageSync('code', res.code)console.log("获取并缓存code:", res.code)if (res) {wx.request({url: '你的服务器API地址',method: 'POST',data: {code: res.code },header:{'content-Type': 'application/x-www-form-urlencoded;charset=utf-8',},success:res=> {console.log("后端:openid:", res.data) let openid = res.dataconst app = getApp()getApp().globalData.openid = openidconsole.log('缓存openid:',app.globalData.openid) wx.setStorageSync('openid', res.data)}})} else {console.log('登录失败!' + res.errMsg)}}})console.log("session_key 已经失效,重新登陆获取流程")}})}})

3.在page页面里新建文件夹mine再对着mine文件夹新建page,定义名字就写mine后会自动生成四个文件

有了mine.js页面并在里边一键复制粘贴进去下面代码:

const app = getApp()Page({data: {userInfo:{nickName:'',avatarUrl:''}},onShow() {this.setData({nickName:wx.getStorageSync('nickName'), userInfo:wx.getStorageSync('userInfo'),mobile:wx.getStorageSync('mobile')}) }, })

4:在mine.wxml页面一键复制粘贴进去下面代码:

<button bind:chooseavatar="onChooseAvatar"><navigator url="/pages/login/login" open-type="navigate"><image class="avatar" src="{{userInfo.avatarUrl}}"> </image></navigator></button><view wx:if="{{!nickName}}" class="login-text">点击授权登录</view><block wx:else><view class="login-text">{{nickName}}</view></block>

5:在mine.wxss页面一键复制粘贴进去下面代码:

.avatar {width: 160rpx;height: 160rpx;border: 1rpx solid #ffffff;border-radius: 50%;margin-top: 1rpx;}.txan[plain] {border: none;border-color: transparent;}.login-text {font-size: 35rpx;display: flex;align-items: center;/*垂直居中 */justify-content: center;}

6.page页面里新建文件夹login(再对着login文件夹右键新建page,定义名字就写login后会自动生成四个文件),

然后一键复制粘贴进去下面代码到login.js页:

const app = getApp();Page({data: {userInfo:{avatarUrl:''}},onShow() {this.setData({userInfo:wx.getStorageSync('userInfo'),}) },onChooseAvatar: function (res) {const {userInfo } = res.detail.avatarUrlthis.setData({userInfo:res.detail})app.userInfo.avatarUrl = res.detail.avatarUrlwx.setStorageSync('userInfo', res.detail)console.log( "缓存头像临时Url:",wx.getStorageSync('userInfo'))var filePath = getApp().userInfo.avatarUrlconsole.log('头像路径filePath:',filePath)var fileName = Math.random().toString(36).substr(2);console.log('头像图片文件名fileName:',fileName) },bindKeyInput: function (e) {},fromsubmit (e) {const nickName = e.detail.value;this.setData({nickName: e.detail.value,})console.log("nickName:",nickName)wx.setStorageSync('nickName', e.detail.value)console.log( "名字有了放缓存:",wx.getStorageSync('nickName'))},setBtnTap() {const {userInfo} = this.dataif([userInfo.avatarUrl] == '/image/avatarUrl.png') {wx.showToast({title: '头像不能为空',icon: 'none'})return}const {nickName} = this.dataif(!nickName) {wx.showToast({title: '昵称不能为空',icon: 'none'})return} wx.navigateBack({url: 'B?id=1'})},})

7:一键复制粘贴进去下面代码到login.wxml页:

<button class="avatar-wrapper bg-gradual-blue shadow-blur"open-type="chooseAvatar" bindchooseavatar="onChooseAvatar" style="width: 268rpx; height: 233rpx; display: block; box-sizing: border-box; left: 0rpx; top: -3rpx; position: relative"><image class="avatar" src="{{userInfo.avatarUrl}}" style="position: relative; left: 0rpx; top: 17rpx"> </image><text class="position" style="width: 176rpx; height: 47rpx; display: flex; box-sizing: border-box">同步头像</text></button><view><form bindsubmit="fromsubmit"> <input style="width: 486rpx; height: 64rpx; display: block; box-sizing: border-box" type="nickname" name="nickName"class="nickname-input" placeholder="点击使用微信昵称" bindinput="fromsubmit"bindKeyInput="bindKeyInput"input value="{{nickName}}"/></form></view><button class="bc lg user-confirm-btn user-confirm-btn--{{canSaveUser?'enabled':'disabled'}}" form-type="submit"catchtap="setBtnTap"type="primary">保存</button>

8:一键复制粘贴进去下面代码到login.wxss页:

.avatar-wrapper {width: 10rpx;height: 250rpx;margin-top: 0rpx;margin-bottom: 30rpx;border-radius: 20rpx;margin-top: 30rpx;}.avatar {width: 150rpx;height: 150rpx;border: 1rpx solid #ffffff;border-radius: 50%;}.nickname-input {margin-bottom: 72rpx;margin: 0 auto;align-items: center;justify-content: center;font-size: 38rpx;font-weight: 400;color: #6164f8;text-align: center;/* 实线边框solid */border-style: solid;/* 圆角弧度radius */border-radius: 25px;/* 边框大小设置 */border-width: 1px;/* 输入框长度设置 */width: 220px;}

9.app.json页全选粘贴下面这段:

{"pages": ["pages/mine/mine","pages/index/index","pages/login/login"],"window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "Weixin","navigationBarTextStyle": "black"},"style": "v2","sitemapLocation": "sitemap.json"}

OK , 搞定!

点击编译 测试一下吧!

点击头像 进去获取一下头像和昵称,

用户openid的话要对接好后端配合才能获取,要需要的朋友评论留言一下,

样式想弄漂亮就要慢慢去美化啦!多多赐教共同进步哈!

希望能点个关注支持一下,陆续会发其它文章资源出来保持交流相互学习!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。