美文网首页
小程序开放能力总结

小程序开放能力总结

作者: js_hcl | 来源:发表于2019-02-21 21:07 被阅读0次

    一、用户认证

    传统网站:前端后台都保存【相当于古代的虎符】

    • 前端向服务器发送用户名和密码
    • 服务器验证后,保存在session内,给前端返回一个session_id
    • 后期,前端携带session_id发送到服务器,服务器通过session_id来认证用户

    JWT(Json Web Token):完全保存在前端(带上签名,服务器知道有没有篡改)【相当于现代的签名】

    • 前端向服务器发送用户名和密码
    • 服务器验证后,给前端返回一个Token(带签名)
    • 后期,前端携带Token发送到服务器,服务器通过Token来认证用户

    小程序:(多了个外层:小程序借助微信体系用户)

    • 前端向微信获得code(wx.login()获得,相当于验证码,有效期五分钟)
    • 服务器向微信接口,发送申请小程序时给的appid和appsecret及code(验证码),返回openid(相当于Token)和session_key
    • 后期,前端携带openid发送到服务器,服务器通过openid来认证用户

    说明:

    • 因为借助微信体系,所有微信来认证,那服务器要获得Token,于是携带上该小程序证件及验证码向微信对应接口来获取open_id(相当于Token)(微信用户体系对于该小程序的身份证编码)UnionID(微信用户体系对于该开发公司的身份证编码)session_key
    • session_key:
    • 因为数据时微信给前端的,为了保证开发者服务器能获得不被篡改的数据
    • 微信会对敏感重要的开放数据以session_key进行加密
    • 服务器再通过session_key来解密。保证了服务器获得正确无误的数据(优先保证服务器获得正确的数据)
    • 前端需要这些数据,再由开发者服务器返回。

    补充:
    session或Token等替代用户名和密码来和服务器认证的,都有时效性,保证数据的安全。

    二、转发

    • "分享监听”能力调整
    • 无法知晓是否分享状态(是否成功,是分享给个人还是群聊)
    • 只有用户主动点击小程序进来,才会携带一些相关信息,如群的标识

    1.添加转发监听事件:

      onShareAppMessage(res) {
        // res:
        // @from <string> "button"/"menu" 判断是右上角转发菜单还是分享按钮触发的
        // @target obj 获得触发源对象
        // @webViewUrl
    
        // 通过res,可以return不同的,自定义转发内容
        return {
          title: '转发的标题',
          path: "/pages/index/index",
          imageUrl:undefined  //如果没有值,默认为页面截图
        };
      }
    

    只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮,及分享按钮点击才生效。

    2.转发的配置(目前为止只能配置,转发回来是否携带shareTicket)

    1.这个函数用于转发的配置,及转发菜单的显示
    wx.showShareMenu({    
      withShareTicket:false  
      success:function(){} 
    })
    
    2.这个函数用于隐藏转发菜单
    wx.hideShareMenu({
       success:function(){} 
    })
    
    3.更新菜单配置
    wx.updateShareMenu(Object object)
    

    3.页面添加分享按钮

     <button open-type='share'>点击分享</button>
    

    4.用户点击分享卡片进来后,获取转发信息

    1.前提:配置  withShareTicket:true
    2.在 App.onLaunch或 App.onShow获取到一个 `shareTicket`
    3.调用wx.getShareInfo(Object object)  获取转发详细信息
    wx.getShareInfo({
      shareTicket:在 App.onLaunch或 App.onShow获取到一个 `shareTicket`
      success:function(res){
          res.encryptedData 获得完整数据及加密数据
          iv:加密算法的初始向量
      }
    })
    
    4.获得的开放数据(加密),发送给后台服务器,解密好后发给前端
    

    相关问题:

    • 点击转发卡片进来,如果是开发版则会加载开发版小程序(不管是不是最新的开发版版本,测试时最好用该手机先扫一下最新的),如果是线上版则会加载线上的小程序
    • 然后wx.reLaunch(重加载该页面)(首先,会执行app.js)所以,需要的数据,要确保在app.json中能获得,否则分享的时候要带上该参数

    相关文章

      网友评论

          本文标题:小程序开放能力总结

          本文链接:https://www.haomeiwen.com/subject/xyidyqtx.html