title: “小程序分享至群群消息小结(包括分享到App)”
date: 2018-09-15 22:05:28
tags:

以下是18年3月底在公司内部的分享,虽然小程序对于分享回调有所限制(下文会说明),但是整体方案依然是可行的


去年做过小程序群成员相关的信息展示需求,后续常有同事来问细节。
因此把去年做完后的梳理的小结发出来供参考。

微信文档现在相较去年也有所更新完善,但大致流程不变。

小程序分享获得群信息小结

  • 官方文档有,但是较分散,所以对这块知识作一个小结,能快速了解小程序分享至群获得群信息的流程。
  • 包括前后端需要做的事情(并不是前端直接获取群信息的)
  • 无法直接获取群内成员信息,小程序只能通过用户发起分享或点击分享,自行收集用户与群之间的关系网

最终目的

获取用户分享相关的群信息,与用户id进行绑定。
三种途径:

  • 用户分享至群 获取群信息
  • 群成员点击分享信息时,获取对应群信息
  • app分享到微信,点开至小程序 (18.03.29补充)

整体流程图

用户分享至群获取转发对象

最近,微信小程序已经无法正常获取成功or失败的回调,这对此功能的影响是无法在用户分享成功的第一时间建立群关系

但是,整体上的群关系依然是能建立的,只是时间滞后了。

path:参数带上分享用户的uid,当点击用户进入后,即可获取两个用户id,一并建立群关系。(18.09.15补充)

Page中

  • 目前已无法获取成功失败回调
//在转发成功回调中获取
onShareAppMessage: function (res) {return {title: '这是一个测试分享',path: '/pages/redPacket/index/index?index=1&hello=hello',success: function(res) {wx.getShareInfo({shareTicket: res.shareTickets[0],success(resShare) { console.log(resShare);},fail(resShare) { console.log(resShare);},});},fail: function(res) {//分享失败}}
},

设置当前页面的转发配置,使其在分享的时候带上shareTicket

wx.showShareMenu({withShareTicket: true
})

获取转发对象shareTicket

onShareAppMessage success的回调中可以拿到shareTickets,一个数组,其对应一个shareTicket

shareTicket:转发对象

获取群相关敏感信息的加密数据

虽然,看起来好像很简单,拿到两个数据解密,就能得到最终的。然而,最终获取还是需要一定的过程。

解密

官方说明中的解密算法:

(解密示例代码可直接在官方文档搜索:加密数据解密算法)
目标密文encryptedData,和解密算法初始向量iv已经在getShareInfo的成功回调中获取

还缺一个密钥session_key
session_key是本次登陆的会话密钥

session_key

这是微信官方给出的`登陆时序图`,获得`session_key`,需要获取三个信息`appid+appsecret+code` 前两者可以在公众号平台中查看。

code:登陆凭证

可以通过wx:login(OBJECT)接口获得,用于换取用户登录态信息,包括用户的唯一标志openid及本次登陆的会话密钥session_key

注意:
  • 如登陆时序图所展示,前端获取code之后,传给后端,解密的工作应在后端进行。session_key不可作为数据在前后端进行传输
  • code有效期5min。换取session_keysession_key生命周期到下一次调用login,引发登录态刷新时。

获得session_key

后端通过以下接口获得

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_codeappid      小程序唯一标识
secret     小程序的 app secret
js_code    登录时获取的 code
grant_type 填写为 authorization_code回参:
openid、session_key

至此,解密需要的所有信息都已获取。解密算法较常见,在此不累述。

解密获得的信息

群id:openGId,以及时间戳都已有
其他参数什么意思,可以参考官方文档,本文不再累述

群成员点击分享信息

  • 前者需要前端进行的工作,都可以在当前Page内完成
  • 而,群成员点击分享信息,shareTicket的获取,在App级别
  • App()onLaunch(),和onShow()里面获取。

获取转发对象

App({onLaunch: function (options) {if (options && options.shareTicket) {//获取shareTicket}},onShow: function (options) {if (options && options.shareTicket) {//获取shareTicket}},
});
  • onLaunch全局只调一次,所以写在onShow里面最好
  • 将option中获得的shareTicket,存cache(可以用其他方式),后续在对应页面获得,处理

App分享至微信,点开到小程序获取群信息

  • 微信文档说明地址

  • https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN

  • Native的同学需要设置的东西

  • 客户端按照文档的说明,发起分享。最后解析流程是一样的。

小程序后端

  • 由于appsecret,是可以重新生成的,如果变动影响较大。因此,咱们登陆后端已经对从code获取session_key的流程,进行了处理。

  • 后续,如果有需求需要涉及这方面,可以直接找登录业务的同事。

  • 登录时获取的session_key可以从xxx-api(公司内部服务)服务中获取

小程序分享至群群消息小结(包括分享到App)相关推荐

  1. 个人小程序智能对话查询工具完整代码分享--快递、身份证、词典、诗词等

    这篇文章的原文地址:http://blog.csdn.net/huangmeimao/article/details/76418753 转载请标明出处,谢谢. 我们经常在电影中看到机器和人对答如流,随 ...

  2. 小程序进入客服消息中心业务(一)

    小程序进入客服消息中心业务(一) 1. 如何进入小程序客服消息中心 button按钮进入小程序客服消息中心 <button open-type="contact">点击 ...

  3. php一对多聊天程序代码,微信小程序实现一对多发消息

    微信小程序中实现一对多发消息详解及实例代码 微信小程序中各个界面之间的传值和通知比较蛋疼.所以模仿了iOS中的通知中心,在微信小程序中写了一套类似的通知中心. 通知中心可以做到:1对多发消息,传递ob ...

  4. java发送qq消息_Java点餐系统和点餐小程序新加微信消息推送功能

    其实想给点餐系统加推送很久了,之前也有单门写过Java版的微信消息推送和云开发版的微信消息推送.之所以一直没有加,也是考虑到大家的学习接受度,因为做订阅消息推送是一个综合性的开发工作. 需要你既要会小 ...

  5. 微信小程序通过微信群发消息(订阅消息)

    微信小程序通过微信群发消息(订阅消息):(这个是云开发的教程,可能对于http的不适用) 一.怎么实现这个功能: 1.在微信公众号平台上面开启功能 先完善小程序的信息,才能开通这个功能 这一步前面还有 ...

  6. TP5之微信小程序推送模板消息

    TP5之微信小程序推送模板消息 1.获取formId并且存储起来,获取formId方法见: https://blog.csdn.net/u010481239/article/details/78239 ...

  7. 小程序云开发之消息推送功能

    小程序云开发之消息推送功能(图文) 一:新建项目 APPID获取方法:1.在微信公众平台上注册账号,选择小程序(也可以从服务号注册,前提你有一个服务号)注册后登录,登录时微信扫码验证一下 2.填写小程 ...

  8. 微信小程序之发送通知消息(通过openid推送消息给用户)

    微信小程序之发送通知消息(通过openid推送消息给用户) 一.获取access_token access_token是接口调用的凭证,目前有效期为两个小时,需要定时刷新,重复获取将导致上次获取的ac ...

  9. 智慧车行预约小程序,汽车保养、维修、美容、检测预测小程序,前后端完整代码包括车行动态,养车常识,保养预约,维修预约,洗车美容预约

    功能介绍 智慧车行小程序,是一个专门为洗车/4S/车辆维修行业打造的小程序,前后端完整代码包括车行动态,养车常识,保养预约,维修预约,洗车美容预约,汽车检测预约等功能,采用腾讯提供的小程序云开发解决方 ...

  10. 微信小程序nodejs+vue课程推荐报名学习分享平台uniapp

    本文以实际运用为开发背景,运用软件工程原理和开发方法, 整个开发过程首先对课程分享平台进行需求分析,得出课程分享平台主要功能.接着对课程分享平台 进行总体设计和详细设计.总体设计主要包括小程序功能设计 ...

最新文章

  1. 这个B站up主太硬核了!纯手工打造AI小电视:硬件自己焊接,驱动代码全手写...
  2. 解决无法将类型为“System.Web.UI.WebControls.HiddenField”的对象强制转换为类型的错误...
  3. CTFshow php特性 web106
  4. 每天一道LeetCode-----根据先序遍历和中序遍历还原二叉树
  5. 通俗彻底解读批处理的延迟变量
  6. 【牛客 - 302哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(低年级)】 小乐乐算数字(水题,快速幂,lowbit)
  7. 详解Python操作Excel文件
  8. 阿里腾讯今日头条纷纷翻牌子,ClickHouse到底有什么本事?
  9. Android 系统分析工具:Systrace
  10. excel中相对引用、绝对引用、混合引用
  11. python 聊天机器人 中文_ 小智,又一个中文聊天机器人
  12. java cutline_利用JFreeChart生成饼形图
  13. Java 三角形求边长和角度
  14. Chatbot-1-笔记
  15. ShardingShpere分库分表5-ShardingSphere分布式事务详解
  16. JPA实体继承实体的映射策略
  17. 搭建属于自己的云同步盘
  18. R3LIVE代码详解(四)
  19. C/C++杂志订阅管理系统[2022-12-31]
  20. 创业者要处理好的10大关系

热门文章

  1. WPS如何删除空白页
  2. LMC7660即-5V产生电路
  3. 教你如何关闭445端口
  4. Java后端防止获取短信验证码接口被恶意调用的代码实现
  5. 网站或APP小程序调用短信验证码接口的流程
  6. 【黄啊码】关于vue的PC端和手机端框架
  7. matlab 傅里叶变换 频谱图,傅里叶变换与信号频谱图.PDF
  8. [lua]紫猫lua教程-命令宝典-L1-01-02. 变量
  9. python抠图 removebg,removebg包:一键抠图换证件照底色
  10. IPV4内网地址网段