微信小程序~wx.getUserInfo逐渐废弃,小程序登录过程将如何优化?

很多的时候我们在做小程序应用的时候,希望用户在使用小程序前进行登录授权,之前登录后通过wx.getUserInfo直接弹出授权的登录方式官方的意思是将不再支持,而是让用户通过下面的方式授权用户信息

<button open-type="getUserInfo" bindgetuserinfo="getUserInfoAction">授权用户信息</button>

这样的话当小程序在使用前一定需要用户登录,或者已经进行到需要用户登录的操作时;这样的话就需要一个button授权页面。这种改变,感觉个人还是喜欢默认弹层的的授权方式,这个方式可能一时不适应吧,有种排斥。

下面是通过button授权的方式做的一个登录:这里我只是展示了login.js 与 index.js 过程,需要代码的留言或者进群

login.js

const ajax = require("../../common/ajax.js")
const tips = require("../../common/tips.js")
Page({
  /**
   * 页面的初始数据
   */
  data: {

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let that = this;

  },
  getUserInfoAction(res){
    let that = this;
    const encryptedData = res.detail.encryptedData;
    const iv = res.detail.iv;

    if (encryptedData && iv){
      // console.log("允许")
      that.login().then((login)=>{

        const params = {
          "code": login.code,
          "encryptedData": encryptedData,
          "iv": iv,
          "type": "small_wechat"
        }

        ajax.posts(params, "api/passport/thirdSign").then((res) => {

          let userinfo = {
            avatar: res.data.data.avatar,
            nickname: res.data.data.nickname,
            token: res.data.data.token,
            user_id: res.data.data.user_id
          }
          wx.setStorageSync("userinfo", userinfo);

          // console.log(wx.getStorageSync("userinfo"));
          if (wx.getStorageSync("userinfo")){
            wx.redirectTo({
              url: ‘/page/index/index‘
            })
          }

        }).catch((errMsg) => {
          tips.showToast("网络连接失败", "none")
          console.log(errMsg)
        })

      }).catch((errMsg) => {
        console.log("登录:" + errMsg)
      })

    }else{
      // console.log("拒绝")
      tips.showToast("请授权公开信息,登录小程序", "none")
    }

  },
  login(){
    // 登录
    let promise = new Promise((resolve, reject) => {
      wx.login({
        success: function (res) {
          if (res.code) {
            resolve(res)
          } else {
            tips.showToast("登录失败", "none")
          }
        },
        fail: function (err) {
          reject(err)
        }
      })

    })
    return promise;
  }
})

index.js

const tips = require("../../common/tips.js")
Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let that = this;
    if (!wx.getStorageSync("userinfo")) {
      //是否登录
      that.isloginindex()
    }

  },
  isloginindex() {
    //是否进入首页
    if (wx.getStorageSync("userinfo")) {
      console.log("登录")
    } else {
      //无信息
      console.log("否登录")
      wx.redirectTo({
        url: ‘/page/login/login‘
      })
    }
  }
})

通过button open-type="getUserInfo"的方式授权登录小程序流程,还没有想到一个更好的办法,目前是这么干的;如果有不对或者更好方式的欢迎指正或者一起交流

原文地址:https://www.cnblogs.com/changxue/p/8966330.html

时间: 2024-08-30 13:22:14

微信小程序~wx.getUserInfo逐渐废弃,小程序登录过程将如何优化?的相关文章

***小程序wx.getUserInfo不能弹出授权窗口后的解决方案

微信更新api后,wx.getUserInfo在开发和体验版本都不能弹出授权窗口.微信文档说明: 注意:此接口有调整,使用该接口将不再出现授权弹窗,请使用 <button open-type="getUserInfo"></button> 引导用户主动进行授权操作 当用户未授权过,调用该接口将直接报错 当用户授权过,可以使用该接口获取用户信息 对此,给出以下解决方案. wx.getUserInfo({ withCredentials: true, success

微信小程序之 wx.getUserInfo引导用户授权问题

首先,在page外定义一个函数用户判断是否为空对象 var isEmptyObject = function (e) { var temp; for (temp in e) return !1; return !0 } 然后,在page中的onload里面调用授权 onLoad: function () { var that = this; if (app.globalData.userInfo) { this.setData({ userInfo: app.globalData.userInf

微信小程序wx.request接口

微信小程序wx.request接口 wx.request是小程序客户端与服务器端交互的接口 HTTPS 请求 一个微信小程序,只能同时(同时不能大于5个)有5个网络请求 wx.request(OBJECT) 发起网络请求 url data header method dataType wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'applicat

微信应用号小程序wx.sendSocketMessage(OBJECT)

微信应用号小程序wx.sendSocketMessage(OBJECT) wx.sendSocketMessage(OBJECT) ? 通过WebSocket连接发送数据,需要先wx.connectSocket,并在wx.onSocketOpen回调之后才能发送. OBJECT参数说明: 参数 类型 必填 说明 data String 是 需要发送的内容 示例代码: var socketOpen = false; var socketMsgQueue = [] wx.connectSocket(

微信应用号小程序wx.onSocketOpen(CALLBACK)

微信应用号小程序wx.onSocketOpen(CALLBACK) wx.onSocketOpen(CALLBACK) ? 监听WebSocket连接打开事件 示例代码: wx.connectSocket({ url:"qkxue.net" }); wx.onSocketOpen(function(res){ console.log("WebSocket连接已打开!") })稿源:勤快学QKXue.NET

微信应用号小程序wx.onSocketError(CALLBACK)

微信应用号小程序wx.onSocketError(CALLBACK) wx.onSocketError(CALLBACK) ? 监听WebSocket错误 示例代码: wx.connectSocket({ url:"qkxue.net" }); wx.onSocketOpen(function(res){ console.log("WebSocket连接已打开!") }) wx.onSocketError(function(res){ console.log(&qu

微信小程序 wx:key详细介绍

转自:http://www.jb51.net/article/95980.htm 微信小程序 wx:key 在自己学习的时候不是多明白到底是怎么回事,经过上网查阅资料,整理下: 个人感觉官方给出的例 子不是很明确,官方解释如下: wx:key 如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> 中的输入内容,<switch/> 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符. wx:key

微信小程序wx.getLocation()获取经纬度及JavaScript SDK调用腾讯地图API获取某一类地址

简介 腾讯位置服务为微信小程序提供了基础的标点能力.线和圆的绘制接口等地图组件和位置展示.地图选点等地图API位置服务能力支持,使得开发者可以自由地实现自己的微信小程序产品. 在此基础上,腾讯位置服务微信小程序JavaScript SDK是专为小程序开发者提供的LBS数据服务工具包,可以在小程序中调用腾讯位置服务的POI检索.关键词输入提示.地址解析.逆地址解析.行政区划和距离计算等数据服务,让您的小程序更强大! 有时候我们在做微信小程序时有些功能需要获取当前的地理位置及附近地点的一些要求,但是

监控微信小程序wx.request请求失败

在微信小程序里,与后台服务器交互的主要接口函数是wx.request(),用于发起 HTTPS 网络请求.其重要性不言而喻.然而,却经常遇到请求失败的问题,笔者特意谷歌"wx.request 请求失败",可以搜索到很多相关的文章,下面列出一些: wx.request 失败| 微信开放社区 微信小程序 wx.request 请求失败- SegmentFault 思否 小程序部分机型小程序用户无法发起 wx.request 请求,网络错误问题 ... wx.request()失败,requ