要在微信公众号中实现分享给好友功能,可以使用微信提供的 onMenuShareAppMessage 接口。该接口会在分享给好友菜单项被点击时触发。

以下是示例代码:

// 配置分享给好友信息
wx.onMenuShareAppMessage({title: '分享标题',desc: '分享描述',link: '分享链接',imgUrl: '分享图标',success: function () {// 分享成功回调console.log('分享给好友成功!');},cancel: function () {// 分享取消回调console.log('分享给好友取消!');}
});

其中:

  • title 表示分享给好友的标题。
  • desc 表示分享给好友的描述。
  • link 表示分享给好友的链接。
  • imgUrl 表示分享给好友的图标。
  • success 表示分享给好友成功的回调函数。
  • cancel 表示分享给好友取消的回调函数。

需要注意的是,要使用 onMenuShareAppMessage 接口,必须先引入微信 JS-SDK,并在页面加载后即可执行 wx.config 和获取 wx.ready

以下是示例代码:

// 引入微信 JS-SDK
<script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>// 配置微信 JS-SDK
wx.config({// 必填,公众号的唯一标识appId: 'YOUR_APP_ID',// 必填,生成签名的时间戳timestamp: TIMESTAMP,// 必填,生成签名的随机串nonceStr: 'YOUR_NONCESTR',// 必填,签名,见附录1signature: 'YOUR_SIGNATURE',// 必填,需要使用的JS接口列表,所有JS接口列表见附录2jsApiList: ['onMenuShareAppMessage']
});// 获取微信 JS-SDK
wx.ready(function () {// 配置分享给好友信息wx.onMenuShareAppMessage({title: '分享标题',desc: '分享描述',link: '分享链接',imgUrl: '分享图标',success: function () {// 分享成功回调console.log('分享给好友成功!');},cancel: function () {// 分享取消回调console.log('分享给好友取消!');}});
});

其中,YOUR_APP_IDTIMESTAMPYOUR_NONCESTRYOUR_SIGNATURE 分别表示您的公众号的唯一标识、生成签名的时间戳、生成签名的随机串和签名。这些值需要您根据实际情况进行填写。

如果在使用 wx.config 进行微信 JS-SDK 的配置时,出现了 config:fail,invalid signature 的错误,一般是由于签名的生成出现了问题。

以下是一些可能导致签名生成问题的原因以及解决方法:

  1. 检查签名的参数是否正确

签名的生成需要一些参数,如:noncestr、timestamp、url、ticket 等。您需要确保这些参数的值都正确、完整并可以被使用。

  1. 检查签名 URL 是否正确

签名 URL 涵盖了使用微信 JS-SDK 的网页 URL,需要使用 encodeURIComponent 对其进行编码后再进行签名。

可以使用以下代码检查编码后的 URL 是否正确:

function getUrl() {var url = window.location.href.split('#')[0];return encodeURIComponent(url);
}
  1. 检查签名算法是否正确

签名算法需要与使用该签名的地方一致,您需要确保使用 wx.config 时使用的签名算法与实际生成签名时使用的算法一致。

  1. 检查 JSAPI 接口列表是否正确

在使用 wx.config 配置微信 JS-SDK 时,需要传入一个数组指定需要使用的 JSAPI 列表,需要确保该数组中包含需要使用的 JSAPI。

如下示例:

wx.config({debug: true,appId: '',timestamp: ,nonceStr: '',signature: '',jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone', 'startRecord', 'stopRecord', 'onVoiceRecordEnd', 'playVoice', 'onVoicePlayEnd', 'pauseVoice', 'stopVoice', 'uploadVoice', 'downloadVoice', 'chooseImage', 'previewImage', 'uploadImage', 'downloadImage', 'translateVoice', 'getNetworkType', 'openLocation', 'getLocation', 'hideOptionMenu', 'showOptionMenu', 'hideMenuItems', 'showMenuItems', 'hideAllNonBaseMenuItem', 'showAllNonBaseMenuItem', 'closeWindow']
});
  1. 检查服务器配置是否正确

如果您是通过服务器端进行签名生成,则需要确保签名生成接口已经正确配置。通常该接口需要使用 GET 方式,返回值应该是一个 JSON 对象,包含“nonceStr”、“timestamp”、“signature”等参数。

以上是一些可能导致签名生成出现问题的原因及解决方法,您可以根据实际情况进行检查和排除。

以下是一段 PHP 代码,用于生成微信 JS-SDK 相关的 wx.config 配置:

<?php
$noncestr = substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 16);  // 随机字符串
$timestamp = time();  // 时间戳
$url = $_POST['url'];  // 当前网页的 URL,需使用 JS 获取// 使用 access_token 获取 jsapi_ticket
$access_token = get_access_token();  // 先获取 access_token,详见:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
$url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token='.$access_token;
$ticket_json = file_get_contents($url);
$ticket_data = json_decode($ticket_json, true);
$ticket = $ticket_data['ticket'];// 对 string1 进行 sha1 加密,得到 signature
$string1 = 'jsapi_ticket='.$ticket.'&noncestr='.$noncestr.'&timestamp='.$timestamp.'&url='.$url;
$signature = sha1($string1);$config = ['appId'     => '<your_appid>','timestamp' => $timestamp,'nonceStr'  => $noncestr,'signature' => $signature,'jsApiList' => ['chooseImage', 'previewImage', 'uploadImage', 'downloadImage']  // 需使用的 jsapi 列表
];echo json_encode($config);
?>

此代码将通过调用微信接口获取 jsapi_ticket,然后生成相关参数并返回给前端。您需要将 <your_appid> 替换为您的公众号的 AppID。

注意,由于需要使用 $_POST['url'] 这个参数去调用微信接口,所以您需要在前端页面将当前网页的 URL 传递过来。建议使用 JS 根据页面 URL 进行生成和传递。

此外,该代码中仅列举了一部分常用的 JSAPI 列表,您需要根据业务需要进行修改。

微信公众号 分享好友相关推荐

  1. 微信分享次数统计、微信公众号分享关注统计

    作为系列文章的第五篇,本文重点探讨数据采集层中的微信分享追踪系统.微信分享,早已成为移动互联网运营的主要方向之一,以Web H5页面(下面称之为微信海报)为载体,利用微信庞大的好友关系进行传播,实现宣 ...

  2. 微信公众号分享链接自定义hash值的处理

    微信公众号默认的分享样式是直接分享一条链接的,样式丑陋.但是微信jsdk暴露了分享的API可以自定义分享样式. 一.分享鉴权及分享接口冲定义 这一块的文档很全面,不做细述.关键代码如下: functi ...

  3. 微信公众号分享配置无效。。分享出来的只是纯链接了,如何自定义微信公众号的分享

    微信公众号分享配置无效..分享出来的只是纯链接了 挺久没接微信公众号的项目开发了,最近突然接了一个,结果微信自定义分享给我整懵了.原本配置的好好的,屡试不爽的代码,居然死活不生效,开启debug,开发 ...

  4. 微信公众号分享网页注意点

    最近自己要做微信分享的防封,就研究一下市面做的分享防封原理,基本分流防封是一个做法. 过程讲述: 通过一个微信公众号分享一个入口,记住这个分享内容网页的内容最好一点违规的都没有,标题和图片可以带有诱导 ...

  5. 微信公众号分享问题总结

    文章目录 前言 微信公众号分享问题总结 微信的一些其他问题 结束 前言 -time:2020/11/18 第一次写博客,以后准备在解决一些问题的时候,写在博客里,方便自己寻找 这篇就 总结一些微信公众 ...

  6. (第三方平台)开发相关,解除80端口占用,微信公众号分享jssdk实现,微信开放平台登录接口接入,2022微信分享接入本地调试,微信分享定制

    一.开发相关 1.平台地址 微信开放平台 QQ互联平台SDK 2.文章收集 来自CSDN兄台的QQ登录使用的教程 微信网站应用开发的详细流程和引导 VueJs单页应用实现微信网页授权及微信分享功能 [ ...

  7. 微信公众号分享功能开发体验

    公众号提供了一个分享功能,通过jsapi来访问,主要作用是修改特定页面下点击微信右上角[...]选择[转发给朋友][分享到朋友圈]以及[分享到手机QQ][分享到QQ空间]的内容. 分享到微信的操作步骤 ...

  8. php实现微信公众号分享,php实现微信公众号自定义分享内容的方法

    这篇文章主要介绍了php版微信公众号自定义分享内容实现方法,结合实例形式分析了php实现微信公众号自定义分享内容的接口调用与相关使用技巧,需要的朋友可以参考下 微信公众号号在手机中通过api接口可以实 ...

  9. php实现微信公众号分享,php版微信公众号自定义分享内容实现方法

    搜索热词 PHP版微信公众号自定义分享内容实现方法,希望对您有用.如果有疑问,可以联系我们. PHP版微信公众号自定义分享内容实现方法.分享给大家供大家参考,具体如下: 自定义分享内容了,下面我们来看 ...

最新文章

  1. RESTFUL框架-网站即软件
  2. 关于linux文件挂载(一)
  3. Database Vault注冊
  4. 开学几天了,还没有进入状态,继续努力
  5. kindEditor富文本编辑器的工具栏设置
  6. 计算机视觉论文-2021-05-11
  7. Soul 网关源码阅读(二)代码初步运行
  8. 使用epoll&socket的总结
  9. 特征提取算法 知乎_对话 | 港科大教授权龙:为什么三维重建才是计算机视觉的灵魂?...
  10. shl归纳推理测试题库_shl归纳推理测试答案
  11. abaqus2018+intel fortran2019+vs2015安装全记录
  12. Emulex公司介绍
  13. 统计分析用户信息量的工具Flurry的使用
  14. 基于Python实现的微信好友数据分析——抓取好友性别、位置、头像签名
  15. Verilog 代码编写 DDS信号发生器(幅频相可调正弦波、方波、三角波、锯齿波)纯VIVADO编写仿真
  16. win10总显示打印机未连接服务器,win10安装打印机一直未响应。。。
  17. [P4V]Perforce(P4V)使用教程
  18. EAN13条形码了解,有c测试代码
  19. 安兔兔电脑ssd测试软件,安兔兔SSD测试软件测评,威钰战国NVMe SSD
  20. 逆向 - 恢复符号表

热门文章

  1. 打印魔方阵(C语言) 所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
  2. HttpClient 源码详解之HttpEntity
  3. 2020-04-16
  4. 靶机渗透练习82-The Planets:Mercury
  5. ireader掌阅ocean3和kindle oasis3区别 哪个好
  6. 我们了解哪些网络头衔呢
  7. 2022年3月:逆境修为,顺境修心。
  8. 微服务综合案例-04-业务逻辑处理
  9. 【gulimall】 p90开始-问题汇总
  10. jdk8环境变量的配置