当前位置: 首页 > 知识库问答 >
问题:

微信小程序,分享私密信息后,被分享者打开链接后没有获取到正确值?

钱跃
2023-07-17

做了一个小程序有如下场景,分享页面给指定用户后,希望能查看该链接的是指定用户,而不是其他用户,比如A发分享给B,那么只能B查看,如果B将信息转发给C,C则不能查看该信息(不采用禁止分享的方式)。

代码如下:

onShareAppMessage: function (options) {    let that = this    return new Promise(resolve => {        http.httpGet('ShareBus/wx_getActivityId',          function (res) {            if (res) {              if (res.success && res.msgType == 200) { //业务正确                let rectiveId = res.resultSet                //设置私密消息,在群聊中也不可转发                wx.updateShareMenu({                  withShareTicket: true, //分享时是否携带ShareTicket                  isPrivateMessage: false,//只是做禁止分享可以不用activityId                  activityId: rectiveId                })                resolve(that.handleShare(options))              }            }          }        )    })},handleShare(options) {    let cardObj = options.target.dataset.obj     let title = "您好,我是" + cardObj.name + ",这是我的名片"    // 设置菜单中的转发按钮触发转发事件时的转发内容    let shareObj = {      title: title,      path: '/pages/busCard/home/home',      imageUrl: cardObj.bigProfileUrl,    };    return shareObj;},

然后我想在app.js里面onShow判断查看当前分享的用户是否能够查看私密信息:

但是 shareTicket 获取到的一直都是 undefined

onShow(options) {    const { shareTicket,referrerInfo } = options    //获取到的 shareTicket 一直是 undefined    if(shareTicket){      this.authPrivate(shareTicket)    }  },  authPrivate(shareTicket,callback){    let that = this    wx.authPrivateMessage({      shareTicket: shareTicket,      success(res) {        if(res.valid == true){          //提示这个人是私密分享的接受者 可以参与活动                  }else{          //提示这个人是不是私密分享的接受者                  }      },      fail(res) {            }    })},

共有1个答案

祁权
2023-07-17
handleShare(options) {  let cardObj = options.target.dataset.obj;  let title = "你好,我是" + cardObj.name + ",这是我的名片";  let shareObj = {    title: title,    path: '/pages/busCard/home/home',    imageUrl: cardObj.bigProfileUrl,  };  return shareObj;}

然后,修改onShareAppMessage函数:

onShareAppMessage: function (options) {  let that = this;  return new Promise(resolve => {    http.httpGet('ShareBus/wx_getActivityId',      function (res) {        if (res) {          if (res.success && res.msgType == 200) { //业务正确            let rectiveId = res.resultSet;                        wx.updateShareMenu({              withShareTicket: true, //分享时是否携带ShareTicket              isPrivateMessage: false, //只是做禁止分享可以不用activityId              activityId: rectiveId            });            resolve(that.handleShare(options)); // 传递options参数给handleShare函数          }        }      }    );  });},

app.json文件:

son{  "pages": [...],  "window": {...},  "permission": {    "scope.userLocation": {      "desc": "你的位置信息将用于小程序定位"    },    "scope.userInfo": {      "desc": "你的基本信息将用于小程序登录和授权"    },    "scope.userLocationBackground": {      "desc": "你的位置信息将持续保持后台定位"    },    "scope.writePhotosAlbum": {      "desc": "你的图片信息将保存在相册中"    },    "scope.camera": {      "desc": "你的相机将用于小程序拍照"    },    "scope.record": {      "desc": "你的麦克风将用于小程序录音"    },    "scope.album": {      "desc": "你的图片将用于小程序展示"    },    "scope.invoiceTitle": {      "desc": "你的抬头信息将用于小程序

app.json文件里:

json{  "pages": [...],  "window": {...},  "permission": {    "scope.userLocation": {      "desc": "你的位置信息将用于小程序定位"    },    "scope.userInfo": {      "desc": "你的基本信息将用于小程序登录和授权"    },    "scope.userLocationBackground": {      "desc": "你的位置信息将持续保持后台定位"    },    "scope.writePhotosAlbum": {      "desc": "你的图片信息将保存在相册中"    },    "scope.camera": {      "desc": "你的相机将用于小程序拍照"    },    "scope.record": {      "desc": "你的麦克风将用于小程序录音"    },    "scope.album": {      "desc": "你的图片将用于小程序展示"    },    "scope.invoiceTitle": {      "desc": "你的抬头信息将用于小程序发票"    },    "scope.werun": {      "desc": "你的微信运动步数将用于小程序展示"    },    "scope.withShareTicket": {      "desc": "你的分享信息将用于小程序展示",      "withShareTicket": true    }  }}

把用户的标识信息加到链接里,

shareObj = {  title: title,  path: '/pages/busCard/home/home?userId=' + cardObj.userId,   imageUrl: cardObj.bigProfileUrl,};

然后:

onLoad(options) {  let userId = options.userId;   let currentUser = getCurrentUser();   if (userId === currentUser.userId) {    // 指定用户可以查看私密信息  } else {    // 非指定用户,无法查看私密信息  }}
 类似资料:
  • 接口说明 获取场景分享信息 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /wish3dearth/api/scene/share/v1.0.0/getShareInfo 是否需要登录 否 请求字段说明 参数 类型 请求类型 是否必须 说明 shareId string query 是 场景分享ID 响应字段说明 参数 类型 说明

  • 接口说明 获取场景分享信息 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /wish3dearth/api/scene/share/v1.

  • 微信小程序怎么通过方法去手动调用分享朋友圈或者分享到微信? 而不是通过直接在右上角点击三个点,点击三个点我知道只要在page里面的对应的onShareAppMessage和onShareTimeline配置对应的方法就好了, 我的意思是如何让用户点击页面的按钮的时候让他手动拉起来弹窗,像点击右上角三个点一样

  • 本篇文章介绍如何利用x5提供的cordova插件实现微博、微信、QQ分享。 在x5中提供了两类分享的插件,一种是微信、QQ、微博这类特定客户端的分享插件,另外一种是通用的分享功能,开发者如果是通用分享需求可参考作者另一篇文章:<社交分享开发教程>( http://doc.wex5.com/social-share/);本篇文章介绍第一种插件的使用教程。 注:在wex53.4版本中,还有一种方式实现

  • 本文向大家介绍PHP微信分享开发详解,包括了PHP微信分享开发详解的使用技巧和注意事项,需要的朋友参考一下  分享一个php微信端开发的经验,有时候当一个项目或工程需要微信端分享之后做一系列事件那么我们就需要获取到微信分享这个动作,也就是说我们已经知道了当前这个东西已经被分享了 ,那么走微信默认的分享显然是不行的我们需要自己动手来配置微信分享,当用户分享时走的是我们预定好的程序那么我们就可以轻松实

  • 本文向大家介绍C#微信分享代码,包括了C#微信分享代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C#微信分享的具体代码,供大家参考,具体内容如下 微信分享代码,先引入: 获取签名: 分享代码: wxsign输出的json 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。