微信小程序开发笔记(三)

1、微信登录相关流程及代码

wx.login获取code后

Page({

  tapLogin: function() {

    wx.login({

      success: function(res) {

        if (res.code) {

          wx.request({

            url: 'https://test.com/login',

            data: {

              username: 'zhangsan', // 用户输入的账号

              password: 'pwd123456', // 用户输入的密码

              code: res.code

            },

            success: function(res) {

              // 登录成功

              if (res.statusCode === 200) {

               console.log(res.data.sessionId)// 服务器回包内容

              }

            }

          })

        } else {

          console.log('获取用户登录态失败!' + res.errMsg)

        }

      }

    });

  }

})

 到微信服务器换取微信用户身份id

开发者服务器和微信服务器通信也是通过HTTPS协议,微信服务器提供的接口地址是:

https://api.weixin.qq.com/sns/jscode2session?appid=<AppId>&secret=<AppSecret>&js_code=<code>&grant_type=authorization_code

URL的query部分的参数中 <AppId>, <AppSecret>, <code> 就是前文所提到的三个信息,请求参数合法的话,接口会返回以下字段。

字段	描述
openid	微信用户的唯一标识
session_key	会话密钥
unionid	用户在微信开放平台的唯一标识符。本字段在满足一定条件的情况下才返回。

绑定微信用户身份id和业务用户身份

开发者后台通过校验用户名密码就拿到了业务侧的用户身份id,通过code到微信服务器获取微信侧的用户身份openid。

业务登录凭证SessionId

用户登录成功之后,开发者服务器需要生成会话密钥SessionId,在服务端保持SessionId对应的用户身份信息,同时把SessionId返回给小程序。小程序后续发起的请求中携带上SessionId,开发者服务器就可以通过服务器端的Session信息查询到当前登录用户的身份,这样我们就不需要每次都重新获取code,省去了很多通信消耗。我们在4.6.4还会提到如何利用本地数据缓存的能力把SessionId存储起来,以便在它还没过期的时候能重复利用,以提高通信的性能。

2、设备能力

wx.scanCode获取二维码的数据
wx.getNetworkType获取网络状态

3、分包

分包目录结构示例

使用分包时app.json示例

{
  "pages":[
    "pages/index",
    "pages/logs"
  ],
  "subPackages": [
    {
      "root": "packageA",
      "pages": [
        "pages/cat",
        "pages/dog"
      ]
    }, {
      "root": "packageB",
      "pages": [
        "pages/apple",
        "pages/banana"
      ]
    }
  ]
}

使用分包时需要注意代码和资源文件目录的划分。启动时需要访问的页面及其依赖的资源文件应放在主包中。

4、常用的wx接口

wx.getSystemInfo
wx.createCanvasContext
wx.getImageInfo
wx.showLoading
wx.hideLoading()
wx.canvasToTempFilePath
wx.showModal
wx.createCameraContext()
wx.compressImage
wx.reLaunch
wx.redirectTo
wx.navigateBack
wx.navigateTo
wx.navigateToMiniProgram
wx.createCameraContext()
wx.getSetting
wx.authorize
wx.openSetting
wx.showToast
wx.chooseVideo
wx.getStorageSync
wx.setStorageSync
wx.removeStorageSync
wx.stopPullDownRefresh()
wx.showShareMenu
wx.navigateBackMiniProgram
wx.requestPayment
wx.login
wx.openOfflinePayView
wx.hideNavigationBarLoading
const version = wx.version.version.split('.').map(n => parseInt(n, 10)); 
var query = wx.createSelectorQuery().in(this); 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值