微信小程序如何获取群聊的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清空表单数据的两种方式(遍历+reset)
Jul 18 Javascript
javascript封装的sqlite操作类实例
Jul 17 Javascript
理解javascript定时器中的单线程
Feb 23 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
Mar 19 Javascript
原生JavaScript实现Tooltip浮动提示框特效
Mar 07 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 Javascript
vue-router 路由基础的详解
Oct 17 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
Sep 07 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 Javascript
通过layer实现可输入的模态框的例子
Sep 27 Javascript
js实现数字从零慢慢增加到指定数字示例
Nov 07 Javascript
微信小程序自定义tabBar的踩坑实践记录
Nov 06 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生成SessionID和图片校验码的思路和实现代码
2009/03/10 PHP
深入理解PHP之require/include顺序 推荐
2011/01/02 PHP
php流量统计功能的实现代码
2012/09/29 PHP
php不用正则验证真假身份证
2013/11/06 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
ajax与302响应代码测试
2013/10/23 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Python的MongoDB模块PyMongo操作方法集锦
2016/01/05 Python
python定义类self用法实例解析
2020/01/22 Python
django在开发中取消外键约束的实现
2020/05/20 Python
Pycharm Git 设置方法
2020/09/15 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
优秀学生获奖感言
2014/02/15 职场文书
乡镇纠风工作实施方案
2014/03/22 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
2015年调度员工作总结
2015/04/30 职场文书
务工证明怎么写
2015/06/18 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang
JavaScript实现简单计时器
2021/06/22 Javascript