之前是用wx.getuserinfo做的用户授权,因为这些接口都要被废弃,所以就用wx.login改接口,现在问题是,有些地方我需要判断用户有没有授权,但是点击授权,提示说授权成功,但是再次打开页面时还会弹出窗口。这个授权做是全局配置,在页面中引用,还有就是头像图片能够插入到数据库中,用户名没有插入。
login文件代码(授权页面):
<form catchsubmit="formSubmit">
<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
<image class="avatar" src="{{avatarUrl}}"></image>
</button>
<view class="row">
<view class="text">用户名</view>
<input type="nickname" class="weui-input" placeholder="请输入昵称"/>
</view>
<button type="primary" style="margin-top:40rpx;margin-bottom: 20rpx;" formType="submit">授权</button>
</form>
js代码:
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
const db = wx.cloud.database();
const app=getApp();
Page({
/**
* 页面的初始数据
*/
data: {
avatarUrl: defaultAvatarUrl,
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
onChooseAvatar(e) {
// console.log(e);
const { avatarUrl } = e.detail
this.setData({
avatarUrl,
})
},
formSubmit(e){
console.log(e);
const nickName=e.detail.value.nickName;
wx.login({
success (res) {
console.log(res);
if (res.code) {
db.collection("user").add({
data:{
code: res.code,
avatarUrl:defaultAvatarUrl,
nickName:nickName
}
})
wx.showToast({
title:"恭喜!授权成功!"
});
setTimeout(()=>{
wx.navigateBack({});
},1500)
}
else {
console.log('登录失败!' + res.errMsg)
}
}
})
},
app.js代码:
//app.js
App({
onLaunch: function () {
if(!wx.cloud){
console.error('请使用2.2.3或以上的基础库以使用云能力')
}else{
wx.cloud.init({
traceUser:true,
})
}
// 展示本地存储能力
const logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
this.globalData={}
this.loadlogin();
},
//判断是否已经授权
loadlogin:function(){
const that=this;
wx.getSetting({
success:res=>{
const islogin=res.authSetting['scope.login'];
if(islogin){
wx.login({
success:res=>{
const login=res.login;
that.globalData.login=login;
}
})
}
}
})
},
//用户授权
is_login: function(){
if(this.globalData.login){
return true;
}else{
return false;
}
},
setUserInfo:function(login){
this.globalData.login=login;
}
})
你这个流程需要优化一下,
目前 wx.getuserinfo, wx.getUserProfile 都将废弃,重新设计一下流程,根据基础库版本,去做不同的适配
具体官方文档链接:https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01