// 这是授权页面的全部代码 import Dialog from '../../miniprogram_npm/@vant/weapp/dialog/dialog'; import Notify from '../../miniprogram_npm/@vant/weapp/notify/notify'; const app = getApp(); const {interfaceUrl} = app.globalData; Page({ /** * 页面的初始数据 */ data: { authBtnShow:false,//显示授权 code:"", canIUse: wx.canIUse('button.open-type.getUserInfo') }, /** * 生命周期函数--监听页面加载 */ onShow: function (options) { const that = this; wx.login({ success(res){ const {code} = res; that.setData({ code, },()=>{ that.getAuthSetting(); }) } }) }, getAuthSetting(){ const that = this; wx.getSetting({ success (res){ if (res.authSetting['scope.userInfo']) { // 已经授权,可以直接调用 getUserInfo 获取头像昵称 that.setData({ authBtnShow:false, }) wx.getUserInfo({ success: function(res) { const {encryptedData,iv} = res; that.loginHandle({encryptedData,iv}); } }) }else{ that.setData({ authBtnShow:true, }) } } }) }, loginHandle(authData){ wx.showLoading({ title: '校验信息...', }) const that = this; const {code} = this.data; const ob = { code, ...authData, } wx.request({ url: `${interfaceUrl}/api/common/miniLogin`, method:"POST", data:ob, success(res){ wx.hideLoading() const {data} = res; if(data.code!=200){ wx.hideLoading() Dialog.alert({ title: '提示', showConfirmButton:false, showCancelButton:false, message: data.msg, }) return false; } wx.setStorage({ data: data.token, key: 'token', success(res){ wx.hideLoading() that.launchOptionLogin(); }, fail(err){ console.log(err); } }) }, fail(err){ wx.hideLoading() Dialog.alert({ title: '错误', message: err.response.data.msg, }) } }) }, // 判断登录时是否要通过场景值来跳转页面 launchOptionLogin(){ const that = this; const dataInfo = wx.getLaunchOptionsSync(); console.log("场景值:",dataInfo); const {scene,query} = dataInfo; const {taskid} = query; if((scene=="1043" || scene=="1014") && query && taskid){ wx.navigateTo({ url:`/pages/tranManage/tranDetail/index?taskid=${taskid}` }) }else{ wx.switchTab({ url:"/pages/index/index" }) } }, // 获取授权 bindGetUserInfo (e) { const {encryptedData,iv} = e.detail; if(encryptedData && iv){ this.loginHandle({encryptedData,iv}); }else{ Notify({ type: 'warning', message: '请先授权登录', duration: 1000, }); } } })
wx.getLaunchOptionsSync API的 BUG(有没有微信官方的大佬帮我看看)BUG一:我们小程序有个需求,就是通过微信公众号消息查看到小程序中的详情页面,公众号消息点击时会传一个task_id参数到授权页面,授权页面登陆成功后,通过wx.getLaunchOptionsSync方法获取到scene场景值,判断scene为1043后就跳转到详情页面,(每个消息模版所带的task_id不同),但是我发现,点击模板消息后,只有第一次带的task_id,后面不管点哪个消息模板,传到小程序的task_id始终是第一个消息的task_id。(下面截图) BUG二:如果第一次通过下拉打开小程序(冷启动),再从微信消息模版打开小程序,获取到的场景值居然是1089(微信聊天主界面下拉,「最近使用」栏(基础库2.2.4版本起包含「我的小程序」栏)),而只有在第一次通过微信公众号消息模版冷启动时,得到的场景值是1043。 [图片][图片] 这里是我授权页面,使用的判断方法,通过参数和场景值,来判断要不要跳转,我想知道这是微信官方的BUG还是我写的代码逻辑不好?各位有遇到过这种问题么?怎么解决的呢 // 判断登录时是否要通过场景值来跳转页面 launchOptionLogin() { const that = this; const dataInfo = wx.getLaunchOptionsSync(); console.log("场景值:", dataInfo); const { scene, query } = dataInfo; const { taskid } = query; if ((scene == "1043" || scene == "1014") && query && taskid) { wx.navigateTo({ url: `/pages/tranManage/tranDetail/index?taskid=${taskid}`//事务的详情页 }) } else { wx.switchTab({ url: "/pages/index/index" //首页 }) } },
2020-12-24就算setsetting()是异步的接口,那么我调用 了getsetting() 返回了已经授权,那么这时调用wx.getlocation() 为啥也会错误呢?
wx.getLocation() 方法的问题<button bindtap='openSetting'>打开设置</button> [图片] 界面中使用了一个按钮,触发 打开设置,在手机端授权后(这里授权了定位),点左上返回后,这时调用wx.getLocation()依然会失败,需要再打开设置界面,再返回,这时才能调用成功(而且偶尔调用成功了,经纬度返回的是0的情况)。而在PC开发时,是可以调用成功的。这应该算是API BUG吧。 这里使用getsetting获取到定位权限后,再去调用location api ,依旧会调用不到。 [图片] [图片] 已经想办法解决了,记录下,可以参考下我的方法: 使用 <button open-type='openSetting' bindopensetting='openSetting'>打开设置</button> 在回调中 e.detail.authSetting["scope.userLocation"] 当true 时就调用。 上传到体验版才会生效。折腾了好半天。坑啊。
2018-11-20而且根本没办法把之前的小程序添加进来啊,之前都不是这样的。
小程序开发工具新增时没有我的电脑选项以前新增小程序时,浏览是有我的电脑等选项的呀,现在咋只有桌面和一个administrator文件夹了?这让人怎么在c盘d盘中新增啊?难道只有我一个人有这个问题吗? [图片]
2018-11-16要加上路径,在app.json中。
复制页面后出现错误提示Please do not call Page constructor in files that not listed in "pages" section of app.json or plugin.json 在复制了一个目录过后出现了这个提示。但是小程序模拟器和真机运行都正常。
2018-07-18