北京乐观大叔 發表於 2021-11-16 14:45:00

记录uni-app的APP端分享到微信好友,链接为小程序页面,分享失败的BUG

<h3 id="记录uni-app的app端分享到微信好友链接为小程序页面分享失败的bug">记录uni-app的APP端分享到微信好友,链接为小程序页面,分享失败的BUG</h3>
<p>分享到微信好友,链接为小程序端报错</p>
<pre><code class="language-javascript">16:59:19.617 fail:{"errMsg":"share:fail send, http://ask.dcloud.net.cn/article/287","errCode":-100,"code":-100} at pages/product/detail.vue:300
</code></pre>
<h4 id="step1">step1</h4>
<p>找原因:由于我没有遇到过,怎么办呢?</p>
<p>因为用的是uni-app框架开发的,所以我直接在社区里面找,知道找到了以下解决方案</p>
<p>[关于‘ 分享到"微信"失败: -100 - Share微信分享:-6] ’ 的最终解决方案 - DCloud问答</p>
<p>问题解决方案长这样</p>
<pre><code class="language-javascript">1. 这个问题根本原因是你微信开发平台上的签名与你的应用签名不一致。顺便一提,微信开放平台上的签名是应用签名的keystore文件的MD5值。MD5值是xx:xx:xx:xx:xx:xx:xx这种格式的秘钥,你复制到微信开发平台上就应该全部转换为小写以及去掉冒号,如f221hghf2h3jhf3k1j这样的一串字符。
2. 更简单地,可以用[签名检测工具](https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android2.apk)工具检查一下app的签名,用法就是下载该工具到手机上,打开输入包名即可得到一串字符,不出意外跟上面的方法得出字符串是一样的。
3. 如果你后面改回来,确认签名已经一致了,但是依旧报这个错误,那么无疑就是微信缓存问题,因为微信记录了app分享的值,删掉微信,重装微信就OK了。
   以上方法由广大DCloud用户摸索出来,我负责总结,如果在这个问题上你还有其他的情况产生,欢迎评论留言。
   参考链接:[分享错误码](http://ask.dcloud.net.cn/article/287)以及该文章下面的评论。欢迎点赞。
</code></pre>
<p>然后我仔细比对了应用签名,发现没有问题。</p>
<h4 id="step2">step2</h4>
<p>我又去试试分享到微信好友文字的方法</p>
<pre><code class="language-javascript">uni.share({
    provider: "weixin",
    scene: "WXSceneSession",
    type: 1,
    summary: "我正在使用HBuilderX开发uni-app,赶紧跟我一起来体验!",
    success: function (res) {
      console.log("success:" + JSON.stringify(res));
    },
    fail: function (err) {
      console.log("fail:" + JSON.stringify(err));
    }
});
</code></pre>
<p>发现依旧报错啊,打不通分享,也测试了其他分享,发现依旧不通,无法分享到微信好友</p>
<h4 id="step3">step3</h4>
<p>然后我觉得是打包配置不对,mainifest.json文件配置的分享有问题,果然,我开始配置成小程序的appid了,结果是<strong>微信开放平台申请的APPID</strong></p>
<p>我修改成我们在微信开放平台申请的APPID后,打包测试了,然后发现分享链接到小程序页面依旧无法成功。</p>
<p>报 分享类型不正确</p>
<p>但是其他的链接,比如简单文本及图片分享都可以分享给微信好友了。</p>
<h4 id="step4">step4</h4>
<p>我然后百思不得姐,炸裂啊,真的有点心态爆炸。</p>
<p>我百度了,终于按照关键词【uniappAPP分享到微信打开是小程序】搜索出来一篇文章</p>
<p>文章链接</p>
<pre><code class="language-tsx">uni.share({
    provider: 'weixin', // 分享服务提供商(即weixin|qq|sinaweibo)
    scene: "WXSceneSession", //分享到聊天界面
    type: 5, //分享形式 5:小程序
    imageUrl: 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/app/share-logo@3.spng',//官方规定分享图比例是5:4,其它尺寸可能显示不全。
    title: '欢迎体验uniapp',
    miniProgram: {
      id: 'gh_abcdefg', //微信小程序原始id
      path: 'pages/index/index', //点击链接进入的页面
      type: 0, //微信小程序版本类型,可取值: 0-正式版; 1-测试版; 2-体验版。 默认值为0。
      webUrl: 'http://uniapp.dcloud.io' //兼容低版本的网页链接
    },
    success: ret =&gt; {
      console.log(JSON.stringify(ret));
    }
});
</code></pre>
<p><strong>注:微信小程序原始id是指:微信公众平台 &gt; 设置 &gt; 基本设置 &gt; 账号信息 &gt; 原始ID</strong></p>
<p>原始id啊,我TM把小程序id写成了小程序AppID</p>
<p><img src="https://gitee.com/nickzhan/imgs-repository/raw/master/%E8%AE%B0%E5%BD%95uni-app%E7%9A%84APP%E7%AB%AF%E5%88%86%E4%BA%AB%E5%88%B0%E5%BE%AE%E4%BF%A1%E5%A5%BD%E5%8F%8B%EF%BC%8C%E6%89%93%E5%BC%80%E4%B8%BA%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%A4%B1%E8%B4%A5%E7%9A%84BUG/image-20211115173050722.png"></p>
<h4 id="step5">step5</h4>
<p>然后把其换成原始ID,接下来就终于步入正轨</p>
<p>但是报微信开放平台APP没有和小程序在同一个账户下</p>
<p>这个简单,我觉得是配置问题,然后在开放平台上绑定这个小程序,就ok了,大功告成。</p>
<p>分享终于成功了。心累</p>
<p><img src="https://gitee.com/nickzhan/imgs-repository/raw/master/%E8%AE%B0%E5%BD%95uni-app%E7%9A%84APP%E7%AB%AF%E5%88%86%E4%BA%AB%E5%88%B0%E5%BE%AE%E4%BF%A1%E5%A5%BD%E5%8F%8B%EF%BC%8C%E6%89%93%E5%BC%80%E4%B8%BA%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%A4%B1%E8%B4%A5%E7%9A%84BUG/image-20211115173457556.png"></p>
<h3 id="总结">总结</h3>
<p>总的来说,使用uni-app框架在APP端分享到微信首先需要在微信开放平台审核你的应用并配置好私钥MD5值,MD5值必须得没有冒号的全小写,跟打包的证书签名一致(去掉冒号转小写即可)。然后在打包文件配置微信开放平台申请的APPID,即可打通分享。</p>
<p>如果是要分享到小程序页面,则需要在开放平台关联小程序的原始id。然后再调用api即可</p><br><br>
来源:https://www.cnblogs.com/mihuk/p/15561164.html
頁: [1]
查看完整版本: 记录uni-app的APP端分享到微信好友,链接为小程序页面,分享失败的BUG