微信小程序如何获取群聊的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购物车实时结算特效实现思路
Sep 23 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
Oct 16 Javascript
js控制input框只读实现示例
Jan 20 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
Jan 26 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
Jun 12 Javascript
Vue中在新窗口打开页面及Vue-router的使用
Jun 13 Javascript
关于Vue项目跨平台运行问题的解决方法
Sep 18 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
Oct 26 Javascript
详解写好JS条件语句的5条守则
Feb 28 Javascript
详解vue 路由跳转四种方式 (带参数)
Apr 28 Javascript
ES6顶层对象、global对象实例分析
Jun 14 Javascript
js函数柯里化的方法和作用实例分析
Apr 11 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学习之流程控制实现代码
2011/06/09 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
试用php中oci8扩展
2015/06/18 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
python进阶之自定义可迭代的类
2019/08/20 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
openCV提取图像中的矩形区域
2020/07/21 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
智利最大的网上商店:Linio智利
2016/11/24 全球购物
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
Java中实现多态的机制
2015/08/09 面试题
高考励志标语
2014/06/05 职场文书
董存瑞观后感
2015/06/11 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
旅游安全责任协议书
2016/03/22 职场文书
Java实现聊天机器人完善版
2021/07/04 Java/Android
Spring Boot 实现 WebSocket
2022/04/30 Java/Android