微信小程序如何获取群聊的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 相关文章推荐
Javascript学习笔记8 用JSON做原型
Jan 11 Javascript
jQuery的学习步骤
Feb 23 Javascript
javascript 日期时间 转换的方法
Feb 21 Javascript
教你用jquery实现iframe自适应高度
Jun 11 Javascript
详谈jQuery中的this和$(this)
Nov 13 Javascript
bootstrap vue.js实现tab效果
Feb 07 Javascript
jQuery UI Grid 模态框中的表格实例代码
Apr 01 jQuery
微信小程序之数据缓存的实例详解
Sep 29 Javascript
javaScript手机号码校验工具类PhoneUtils详解
Dec 08 Javascript
Vue 实现双向绑定的四种方法
Mar 16 Javascript
使用webpack3.0配置webpack-dev-server教程
May 29 Javascript
nuxt 实现在其它js文件中使用store的方式
Nov 05 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
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
PHP微信分享开发详解
2017/01/14 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
Python查询IP地址归属完整代码
2017/06/21 Python
Python实现类的创建与使用方法示例
2017/07/25 Python
python先序遍历二叉树问题
2017/11/10 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
django云端留言板实例详解
2019/07/22 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
新员工欢迎词
2014/01/12 职场文书
体育教学随笔感言
2014/02/24 职场文书
本科生就业推荐信
2014/05/19 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
爱心募捐感谢信
2015/01/22 职场文书
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL