• 微信小程序登录流程


    小程序登录流程

    参考

    app.js需要做的

    1,首先通过wx.login()拿到code,成功之后,发送数据,请求接口,把code发送给后端,换区openid,sessionKey,unionId,把openid存起来

    wx.login({
          success: res => {
            console.log(res)
            
            // 发送 res.code 到后台换取 openId, sessionKey, unionId
            
          }
        })

    2,接下来获取用户信息

    wx.getSetting() 授权,如果授权成功了,直接调wx.getUserInfo() ,

    wx.getSetting({
          success: res => {
            if (res.authSetting['scope.userInfo']) {
              // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
              wx.getUserInfo({
                success: res => {
                  // 可以将 res 发送给后台解码出 unionId
                  this.globalData.userInfo = res.userInfo
    
                  // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
                  // 所以此处加入 callback 以防止这种情况
                  if (this.userInfoReadyCallback) {
                    this.userInfoReadyCallback(res)
                  }
                }
              })
            }
          }
        })

    如果没有,在你首页把授权绑定在需要操作的按钮上

    <button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="getUserInfo" plain='true' ></button>

    执行自定义方法,然后把用户信息赋值给app.js里面的global userInfo,然后就没有然后了,剩下的就是普通掉接口,跑业务

    补充一种小程序通过手机号微信授权拿到用户信息

    <button class="{{allowed==1?'active':''}}" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber" disabled="{{allowed == ''}}">获取</button>
    
    getPhoneNumber(e){
        console.log(e);
        if(e.detail.errMsg=='getPhoneNumber:ok'){
          httpData.getunionid({
            openid:wx.getStorageSync("openid"),
            encryptedData:e.detail.encryptedData,
            iv: e.detail.iv
          }).then(res=>{
            console.log("dd",res)
            wx.setStorageSync("unionid", res.data.data); //这里返回用户信息userInfo,命名比较随意不用介意
            app.globalData.unionid = res.data.data;
            wx.reLaunch({
              url: '/pages/index/index',
            })
          })
        }
      },

    解释下openid是我在app.js里面获取的(通过wx.login获取code,在调用后端接口获取openid)

  • 相关阅读:
    vue项目学习--2019/5/6
    JAVA注释--2019-04-28
    MyIbatis和Hibernate的区别--2019-04-26
    Thread类和Runnable接口实现多线程--2019-4-18
    Linux文件的扩展名--2019-04-25
    Linux文件名匹配和输出重定向--2019-4-24
    linux学习之命令的排列、替换和别名--2019-04-23
    linux学习--2019-04-22
    操作系统中线程和进程的概念--2019-4-17
    arrayList和vector的区别--2019-4-16
  • 原文地址:https://www.cnblogs.com/zhihou/p/10680682.html
Copyright © 2020-2023  润新知