- 微信小程序登录获取不到头像和昵称解决办法!
微信小程序登录获取不到头像和昵称主要原因是:小程序wx.getUserProfile接口被收回! 大家可以按照文档操作↓ PS: 针对小程序wx.getUserProfile接口将被收回后做出的授权调整 小程序文档中提出的调整说明 [图片] [图片] 对于此次变化,现将小程序授权方式做以调整 添加判断当前基础库是否支持头像昵称填写能力在根目录App.vue中加入判断基础库是否大于2.21.2版本(大于此版本支持头像/昵称填写能力) // #ifdef MP const version = uni.getSystemInfoSync().SDKVersion if (Routine.compareVersion(version, '2.21.2') >= 0) { that.$Cache.set('MP_VERSION_ISNEW', true) } else { that.$Cache.set('MP_VERSION_ISNEW', false) } // #endif Copy 2.修改/pages/users/wechat_login.vue文件 (1) 在data中加入基础库判断,决定授权逻辑 mp_is_new: this.$Cache.get('MP_VERSION_ISNEW') || false Copy (2)dom中新增逻辑判断 [图片] (3) methods中加入方法userLogin // 小程序 22.11.8日删除getUserProfile 接口获取用户昵称头像 userLogin() { Routine.getCode() .then(code => { uni.showLoading({ title: '正在登录中' }); authLogin({ code, spread_spid: app.globalData.spid, spread_code: app.globalData.code }).then(res => { if (res.data.key !== undefined && res.data.key) { uni.hideLoading(); this.authKey = res.data.key; this.isPhoneBox = true; } else { uni.hideLoading(); let time = res.data.expires_time - this.$Cache.time(); this.$store.commit('LOGIN', { token: res.data.token, time: time }); this.getUserInfo() } }) }) .catch(err => { console.log(err) }); }, Copy 3.新增用户头像/昵称获取能力 (1)调整pages/users/user_info.vue文件 data中添加 mp_is_new: this.$Cache.get('MP_VERSION_ISNEW') || false Copy (2)调整dom中 [图片] (3)methods中加入方法 onChooseAvatar(e) { const { avatarUrl } = e.detail this.$util.uploadImgs('upload/image', avatarUrl, (res) => { this.userInfo.avatar = res.data.url }, (err) => { console.log(err) }) }, Copy 这里有一个公共方法uploadImgs需要在/utils/util.js中添加 uploadImgs(uploadUrl, filePath, successCallback, errorCallback) { let that = this; uni.uploadFile({ url: HTTP_REQUEST_URL + '/api/' + uploadUrl, filePath: filePath, fileType: 'image', name: 'pics', formData: { 'filename': 'pics' }, header: { // #ifdef MP "Content-Type": "multipart/form-data", // #endif [TOKENNAME]: 'Bearer ' + store.state.app.token }, success: (res) => { uni.hideLoading(); if (res.statusCode == 403) { that.Tips({ title: res.data }); } else if (res.statusCode == 413) { that.Tips({ title: '上传图片失败,请重新上传小尺寸图片' }); } else { let data = res.data ? JSON.parse(res.data) : {}; if (data.status == 200) { successCallback && successCallback(data) } else { errorCallback && errorCallback(data); that.Tips({ title: data.msg }); } } }, fail: (err) => { uni.hideLoading(); that.Tips({ title: '上传图片失败' }); } }) },
2022-11-15 - 11月9日小程序获取用户头像、昵称接口再次改版???为了还原用户授权和之前一样,分享实用代码,复制即用。
先看效果 [图片] wxml代码 <!-- //////////////////////////////////////////////////////////////////////////新版本获取用户微信头像和昵称 --> <view style="margin: 100px 0 0 0;background-color: #00000096;position: fixed;top: 0;width: 100%;height: 100%;z-index: 99999;display: flex;align-items: center;justify-content: center;"> <view wx:if="{{show_get_avatar}}" style="background-color: #fff;border-radius: 20rpx;width: 75%;padding: 3%;"> <view style="display: flex;justify-content: center;font-size: 32rpx;font-weight: 800;">授权微信登录</view> <view style="height: 20rpx;"></view> <view style="display: flex;justify-content: center;font-size: 28rpx;width: 80%;margin: 0 0 0 10%;">为了完善用户个人信息,我们需要获取您的微信头像和昵称</view> <view style="height: 20rpx;"></view> <button wx:if="{{!show_get_nickname}}" open-type="chooseAvatar" bindchooseavatar="get_avatar" style="font-size: 25rpx;background-color: #00810b;color: #fff;">点击授权头像</button> <view style="height: 20rpx;"></view> <view style="display: flex;justify-content: center;"> <image wx:if="{{show_get_nickname}}" src="{{avatar}}" style="width: 80rpx;height: 80rpx;border-radius: 50%;"></image> </view> <view style="height: 20rpx;"></view> <form bindsubmit="get_nackname_form"> <view style="display: flex;justify-content: center;align-items: center;"> <input wx:if="{{show_get_nickname}}" type="nickname" bindtap="get_nickname" placeholder="点击授权昵称" name="nickname" style="text-align: center;width: 48%;font-size: 25rpx;background-color: #00810b;color: #fff;border-radius: 10rpx;height: 60rpx;" placeholder-style="color:#fff;font-weight:800;text-align: center;"></input> </view> <view style="height: 20rpx;"></view> <view style="display: flex;width: 90%;margin: 0 0 0 5%;"> <button style="font-size: 25rpx;">不登录</button> <view style="width: 20rpx;"></view> <button formType="submit" style="font-size: 25rpx;background-color: #009aa5;color: #fff;">立即登录</button> </view> </form> </view> </view> <!-- //////////////////////////////////////////////////////////////////////////新版本获取用户微信头像和昵称 --> js代码 //////////////////////////////////////////////////////////////////////////新版本获取用户微信头像和昵称 get_avatar(e){ console.log(e.detail.avatarUrl) this.setData({ show_get_nickname:1, avatar:e.detail.avatarUrl, }) }, get_nackname_form(e){ console.log(e.detail.value) if(e.detail.value.nickname==""||!this.data.avatar){ console.log("请授权") wx.showToast({ title: '请授权头像和昵称', icon: 'none', duration: 1000 }) }else{ var user_info={ avatar:this.data.avatar, nickname:e.detail.value.nickname } wx.setStorageSync('user_info', user_info) console.log(wx.getStorageSync('user_info')) } } //////////////////////////////////////////////////////////////////////////新版本获取用户微信头像和昵称 给个关注么么哒~~,接小程序开发,大家一起讨论技术~~
2022-11-17 - 一个组件解决隐私授权:小程序用户隐私保护授权弹窗组件
项目链接:https://github.com/94xy/miniprogram-privacy 效果预览: [图片] 使用方法: 1、复制项目 [代码]component[代码] 文件夹中的 [代码]privacy[代码] 文件夹到小程序项目中的组件目录; 2 、在 page.json 中引入组件 { "usingComponents": { "Privacy": "/component/privacy/privacy" } } 3 、在 page.wxml 中使用组件,需要授权显示弹窗,不需要不显示 <Privacy /> 4 、可以在所有使用了隐私接口的页面都加上该组件,授权一次之后使用所有隐私接口不再需要授权 跳过阅读: 可以不阅读就点击“同意”按钮 <Privacy skipRead="{{true}}" /> 流程: 页面显示时使用 wx.getPrivacySetting 接口查询是否需要授权,需要授权则显示组件;用户点击“拒绝”直接退出小程序,用户点击“同意”关闭弹窗并同步给微信,之后可以正常使用所有隐私接口。 注意事项: 2023 年 9 月 15 号之前,默认不会启用隐私相关功能,所以检测不到需要弹窗的情况,可以在 app.json 中配置 "__usePrivacyCheck__": true 之后,接口才可以检测到是否需要弹窗。个人实际情况:我在开发者工具中配置了 "__usePrivacyCheck__": true ,needAuthorization 无论如何返回的都是 false,但在真机模拟的情况下可以返回 true自动打开隐私保护指引界面需在「小程序管理后台」配置《小程序用户隐私保护指引》,官方用户隐私保护指引填写说明。 取消授权: 微信中「微信下拉-最近-最近使用的小程序」中删除小程序可取消授权。 开发者工具中「清除模拟器缓存-清除授权数据」可取消授权。
2023-08-28 - 小程序的体验评价项不见了是什么原因?
如题,昨天还显示评分、人数 今天不显示了,什么情况啊?
2023-07-28 - 小程序如何获取用户唯一标识?例如微信号
小程序如何获取用户唯一标识?例如微信号
2022-12-27 - 手机号,微信头像,昵称一个接口获取?
大佬们,有没办法一个接口获取手机号,微信头像,昵称,性别,城市等等信息啊? 如果按腾讯,授权手机号要弹出一次,头像,弹出一次,昵称弹出一次,感觉用户好累啊,使用性也不强 求大师指点
2023-08-30 - 用户头像和昵称这种框框是如何调用起来的?
用户头像和昵称改版后,手动获取头像和昵称,但是最近发现有小程序可以直接这样调起一个框,然后再获取,请问下这个框是通过哪个接口调起来的?[图片]
2023-10-11