收藏
回答

h5链接在微信浏览器打开没有分享朋友和朋友圈选项?

公众号ID
wx9390d8e3a3924078
import { wechatshareData } from '../../api/wxMiniprogram.js';
import wx from 'weixin-js-sdk';
import Vue from 'vue'


// 判断是否是IOS端
const isIOS = !!window.navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)


// 调用接口获取微信权限验证配置信息
const ajaxShare = (to) => {
  return new Promise((resolve,reject) => {
    // 调用“分享”接口返回的配置的微信分享信息
    // 请求信息:
    //   1、非ios设备,切换路由时候进行重新签名url=window.location.href
    //   2、ios 设备进入页面则进行js-sdk签名url=window.location.href.split('#')[0]
    // 返回信息:
    //   1、获取成功:微信权限验证配置信息;
    //   2、获取失败:则阻断提示返回的信息;
    //   3、调用失败:阻断提示“系统繁忙,请稍后重试”。
    const url = isIOS ? window.location.href.split('#')[0] : 'https://hlwtest.picchealth.com/gxcpwap/#' + to.fullPath
    //const url = isIOS ? window.location.href.split('#')[0] : window.location.href.split('#')[0]
    const Body = {
      head: wechatshareData.head,
      body:{
        url: url,
      }
    }
    wechatshareData.getPost(Body).then(response => {
      const data =  response.data.tradeMap.data.body
      if(data){
        if(data.state === '00'){
          // 微信权限验证配置信息
          const mshopConfigData = {
            appId: data.respInfo.appId,
            timestamp: data.respInfo.timestamp,
            nonceStr: data.respInfo.nonceStr,
            signature: data.respInfo.signature
          }
          resolve({
            flag: true,
            config: mshopConfigData
          })
        }else {
          // Vue.prototype.$dialog.alert({ title: '温馨提示', message: data.message})
          resolve({
            flag: false,
          })
        }
      }else{
        reject('系统繁忙,请稍后重试。');
      }
    }).catch((error) => {
       console.log(error, 'wechatshareData');
       reject(error);
    })
  })
};


// 微信权限验证配置
const configWXMenu = (value, callback) => {
  let mshopConfigData
  if (isIOS) {
    mshopConfigData = JSON.parse(window.sessionStorage.getItem(`mshopIOSConfigData`))
  } else {
    mshopConfigData = JSON.parse(window.sessionStorage.getItem(`mshop${value.to.name}ConfigData`))
  }


  // if ('wx' in window && mshopConfigData) {
    // console.log(mshopConfigData,'mshopConfigData');


    wx.config({
      debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
      appId: mshopConfigData.appId, // 必填,公众号的唯一标识
      timestamp: mshopConfigData.timestamp, // 必填,生成签名的时间戳
      nonceStr: mshopConfigData.nonceStr, // 必填,生成签名的随机串
      signature: mshopConfigData.signature, // 必填,签名,见附录1
      jsApiList: value.apiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
    })


    wx.error(function(res) {
      console.log('微信权限验证失败:', res);
      // 可以在这里添加一些用户提示或重试逻辑
    });
    callback && callback()
  // }
}


// 微信分享设置
const shareWXMenu = (to) => {
  configWXMenu(
    {
      to,
      apiList: ['updateAppMessageShareData','updateTimelineShareData']
    },
    () => {
      wx.ready(() => {
        const mshopShareData = JSON.parse(window.sessionStorage.getItem(`mshop${to.name}ShareData`))
        if(mshopShareData) {
          console.log(window.location.href,'页面链接')
         // wx.showMenuItems({
         //    // 要显示的菜单项,所有menu项见附录3
         //    menuList: ['menuItem:share:appMessage']
         //  })
          // 发送给朋友
          wx.updateAppMessageShareData({
            title: mshopShareData.shareTitle, // 分享标题
            desc: mshopShareData.shareText, // 分享描述
            link: window.location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: mshopShareData.shareIcon, // 分享图标
            success: function () {
              // 设置成功
              console.log('成功分享朋友h5');
            },
            cancel: function () {
              console.log('分享取消');
            },
          })
          // 分享朋友圈
          wx.updateTimelineShareData({
            title: mshopShareData.shareTitle, // 分享标题
            desc: mshopShareData.shareText, // 分享描述
            link: window.location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: mshopShareData.shareIcon, // 分享图标
            type: 'link',
            dataUrl: '',
            success: function () {
              // 设置成功
              console.log('成功分享朋友圈h5');
            },
            cancel: function () {
              console.log('分享取消');
            },
          })
        }
      })
    }
  )


}


// 微信分享给好友、好友群
export const wechatShare = async function (productName, to) {


  // 产品详情页分享,产品分享给好友、好友群
  let mshopConfigData
  if (isIOS) {
    mshopConfigData = JSON.parse(window.sessionStorage.getItem(`mshopIOSConfigData`))
  } else {
    mshopConfigData = JSON.parse(window.sessionStorage.getItem(`mshop${to.name}ConfigData`))
  }
  if (mshopConfigData) {
    shareWXMenu(to)
    return
  }
  const data = await ajaxShare(to);
  console.log(data,'分享返回数据');
  if(data.flag === true){
    if(data.config){
      if(isIOS){
        window.sessionStorage.setItem(`mshopIOSConfigData`, JSON.stringify(data.config))
      }else{
        window.sessionStorage.setItem(`mshop${to.name}ConfigData`, JSON.stringify(data.config))
      }
      shareWXMenu(to)
    }
  }
};



打开调试config:ok updateAppMessageShareData:ok updateTimelineShareData:ok,wx.ready也能成功回调,右上角三个点没有分享朋友和朋友圈选项,是进入页面初始化掉的分享方法,会闪一下选项然后就没有,苹果安卓都是这样,打印输出的也返回了,这个是页面链接   https://hlwtest.picchealth.com/gxcpwap/#/ylbx/ylbfalyxzbtb/huaweihn

回答关注问题邀请回答
收藏

1 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    03-25

    你好,微信开发者工具控制台一步一步Debug,提供Debug截图

    03-25
    有用
    回复 2
    • 。。
      。。
      发表于移动端
      03-25
      这是h5链接,我把调试打开,出现config:ok,那俩分享接口:ok,wx.ready也能打印出信息
      03-25
      回复
    • 社区技术运营专员--许涛
      社区技术运营专员--许涛
      03-26回复。。
      你是小程序跳转web里面的H5,然后H5再分享对吗?
      03-26
      回复
登录 后发表内容
问题标签