微信小程序如何获取群聊的openGid以及名称详解


Posted in Javascript onJuly 17, 2019

背景:由于公司可能需要在微信群里面使用打卡功能,因此做了个技术调研。

方案:微信在更新分享接口后,原有的在onShareAppMessage中直接拿shareTicket已不复存在。根据最新文档显示,需要在App.onLaunch()跟App.onShow()中获取。

Demo核心代码:

index.js

Page({

 /**
  * 页面的初始数据
  */
 data: {
  openGid: ''
 },

 /**
  * 生命周期函数--监听页面加载
  */
 onLoad: function (options) {
  let that = this
  wx.showShareMenu({
   withShareTicket: true
  })
  app.getShareTiket(function (globalData) {
   console.log('clickReload---globalData-->' + JSON.stringify(globalData))
   that.setData({
    openGid: globalData.openGid
   })
  })
 },
 clickReload: function () {
  let that = this
  app.getShareTiket(function (globalData) {
   console.log('clickReload---globalData-->' + JSON.stringify(globalData))
   that.setData({
    openGid: globalData.openGid
   })
  })
 }
})

index.wxml

<!--index.wxml-->
<view wx:if="{{openGid}}" class='groupName'>
 群名称:<open-data type="groupName" open-gid="{{openGid}}"></open-data>
</view>

<view wx:else>
 <button bindtap='clickReload'>点击加载群名称</button>
</view>

<view>{{openGid ? openGid : '无'}}</view>

app.js

//app.js
App({
 globalData: {
  shareTicket: '',
  openGid: ''
 },
 onLaunch: function (options) {

 },
 onShow: function (options) {
  let that = this
  if (options && options.scene == 1044) {
   that.globalData.shareTicket = options.shareTicket
  }
  console.log('onShow---options=--->' + JSON.stringify(options))
 },
 getShareTiket: function (cb) {
  let that = this
  // 展示本地存储能力
  if (that.globalData.shareTicket) {
   wx.getShareInfo({
    shareTicket: that.globalData.shareTicket,
    success: function (res) {
     console.log('getShareTiket---shareTicket-->' + JSON.stringify(res))
     let js_encryptedData = res.encryptedData
     let js_iv = res.iv
     wx.login({
      success: function (res) {
       let js_code = res.code
       console.log('code-->' + js_code)
       wx.request({
        url: 'xxxxxxxx',
        method: 'POST',
        data: {
         code: js_code,
         appId: 'xxxxx',
         encryptedData: js_encryptedData,
         iv: js_iv
        },
        success: function (res) {
         that.globalData.openGid = res.data.openGId
         console.log('getShareTiket---openGid' + that.globalData.openGid)
         typeof cb == "function" && cb(that.globalData)
        },
        fail: function (err) {
         console.log('getShareTiket---err' + JSON.stringify(err))
        }
       })
      }
     })
    }
   })
  } else {
   console.log('不存在shareTicket')
  }
 }
})

注意事项

1:必须调用这个接口wx.showShareMenu({withShareTicket: true}),否则在App.onLaunch()跟App.onShow()时,你拿不到shareTicket.

2:微信开发者工具可以模拟1044的场景,但是不会显示群名称,因为你不在群里。所以测试的时候,自己拉个微信群,然后分享到测试群,就能拿到群名称。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery 的扩展方法总结
Oct 01 Javascript
javascript学习笔记(四) Number 数字类型
Jun 19 Javascript
js时间戳格式化成日期格式的多种方法
Nov 11 Javascript
原生javascript实现简单的datagrid数据表格
Jan 02 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
Aug 12 Javascript
JavaScript鼠标特效大全
Sep 13 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
Jan 16 Javascript
AngularJS实现表格的增删改查(仅限前端)
Jul 04 Javascript
带你了解session和cookie作用原理区别和用法
Aug 14 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
Sep 22 Javascript
详解vue-cli 2.0配置文件(小结)
Jan 14 Javascript
150行代码带你实现微信小程序中的数据侦听
May 17 Javascript
vue+django实现一对一聊天功能的实例代码
Jul 17 #Javascript
微信小程序从注册账号到上架(图文详解)
Jul 17 #Javascript
js设置默认时间跨度过程详解
Jul 17 #Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
Jul 17 #Javascript
初试vue-cli使用HBuilderx打包app的坑
Jul 17 #Javascript
移动端吸顶fixbar的解决方案详解
Jul 17 #Javascript
基于webpack4+vue-cli3项目实现换肤功能
Jul 17 #Javascript
You might like
利用php来自动调用不同服务器上的flash
2006/10/09 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
Python单链表的简单实现方法
2014/09/23 Python
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
python制作小说爬虫实录
2017/08/14 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
服装厂厂长岗位职责
2013/12/27 职场文书
大学生开西餐厅创业计划书
2014/02/01 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers