微信小程序如何获取群聊的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 相关文章推荐
js类的静态属性和实例属性的理解
Oct 01 Javascript
jQuery 方法大全方便学习参考
Feb 25 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
Jul 15 Javascript
JQuery实现倒计时按钮具体方法
Nov 14 Javascript
利用浏览器全屏api实现js全屏
Jan 16 Javascript
基于javascript bootstrap实现生日日期联动选择
Apr 07 Javascript
如何高效率去掉js数组中的重复项
Apr 12 Javascript
js实现自定义进度条效果
Mar 15 Javascript
基于Vue实例对象的数据选项
Aug 09 Javascript
JavaScript闭包的简单应用
Sep 01 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
Jul 07 Javascript
JS document文档的简单操作完整示例
Jan 13 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+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
php curl的深入解析
2013/06/02 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
一个用js实现控制台控件的代码
2007/09/04 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
javascript时间函数大全
2014/06/30 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中endswith()函数的基本使用
2015/04/07 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
Python绘制动态水球图过程详解
2020/06/03 Python
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
农村婚礼证婚词
2014/01/10 职场文书
学校安全工作制度
2014/01/19 职场文书
考博专家推荐信
2014/05/10 职场文书
监察建议书
2015/02/04 职场文书
努力工作保证书
2015/02/28 职场文书
旗帜观后感
2015/06/08 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
导游词之潮音寺
2019/09/26 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python
python实现三阶魔方还原的示例代码
2021/04/28 Python
分享几个简单MySQL优化小妙招
2022/03/31 MySQL
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python