微信公众号分享给微信好友和朋友圈

小程序分享(两种方法2026最新一键复制即可) 在开发小程序时,添加分享功能是一个常见需求。两种方法是实现小程序分享的不同方式,但它们有不同的应用场景和要求。(一键复制2024) 阅读详情

前端

引入js

<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>

<script type="text/javascript">

        $(function(){
            $('.wyh_pro').click(function() {
                $(this).hide();
            });
            $.ajax({
                url:'<?=site_url('api/api_wechat/jsapi_config_params');?>',
                type:'post',
                data:{url:'<?=$url;?>'},
                dataType:'json',
                async:false,
                success: function(res) {
                    wx.config({
                        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                        appId: res.data.appid, // 必填,公众号的唯一标识
                        timestamp: res.data.timestamp, // 必填,生成签名的时间戳
                        nonceStr: res.data.noncestr, // 必填,生成签名的随机串
                        signature: res.data.signature,// 必填,签名
                        jsApiList: [
                        'checkJsApi',  
                        'onMenuShareTimeline', 
                        'onMenuShareAppMessage', 
                        'onMenuShareQQ',  
                        'onMenuShareWeibo' 
                        ]
                    });
                }
            });
            wx.ready(function () {     
        
                wx.onMenuShareAppMessage({//分享朋友    
                    title: '<?=$_SESSION['user']['tenant_name']?>',    
                    desc: '<?=$_SESSION['user']['tenant_name']?>分享',    
                    link: '<?=site_url('wechat/main/enter/').$tenant_id;?>',    
                    // imgUrl: '<?=base_url();?>media/wechat/luckdraw/img/logo.png'
                });  
                wx.onMenuShareTimeline({//分享朋友圈  
                    title: '<?=$_SESSION['user']['tenant_name']?>',    //标题
                    desc: '<?=$_SESSION['user']['tenant_name']?>分享',    //内容
                    link: '<?=site_url('wechat/main/enter/').$tenant_id;?>',    //页面
                    // imgUrl: '<?=base_url();?>media/wechat/luckdraw/img/logo.png'//logo图片
                });    
            });


        });

</script>

后台   

获取jsapi config参数

public function jsapi_config_params() {
        $sign_data = [];
        $sign_data['jsapi_ticket'] = $this->get_jsapi_ticket($_SESSION['user']['tenant_id']);//获取jsapi_ticket
        $this->return['data']['noncestr'] = $sign_data['noncestr'] = md5(rand(100000,999999));//生成noncestr
        $this->return['data']['timestamp'] = $sign_data['timestamp'] = time();//生成timestamp
        $this->return['data']['url'] = $sign_data['url'] = $this->input->post('url');//生成url
        $this->return['data']['signature'] = $this->get_jsapi_sign($sign_data);//生成signature
        $this->return['data']['appid'] = $this->app_id;//这是appid
        $this->result();

}

验证签名

private function get_jsapi_sign($data) {
        ksort($data);
        $tmpSign = $this->arrToTempStr($data);
        $sign = strtolower(sha1($tmpSign));
        return $sign;

}

获取当前jsapi_ticket

​
public function get_jsapi_ticket($tenant_id) {
    //将jsapi_ticket存入数据库$tenant_id为数据库的唯一标识数据库表结构如下
    $this->load->model('system_wechat_jsapi_tickets_model','system_wechat_jsapi_tickets');
    //查询出jsapi_ticket是否存在
    $res = $this->system_wechat_jsapi_tickets->find(['tenant_id' => $tenant_id]);
    //不存在就创建一条
    if (!$res || !is_array($res)) {
        $jsapi_ticket = $this->get_new_jsapi_ticket($tenant_id);//获取一个新的jsapi_ticket
        //在数据库增加一条新的数据
        $this->system_wechat_jsapi_tickets->create(['jsapi_ticket' => $jsapi_ticket,'time' => date('Y-m-d H:i:s'),'tenant_id' => $tenant_id]);
        return $jsapi_ticket;//返回jsapi_ticket
    } else if (time() - strtotime($res['time']) > 7150) {//如果生成的jsapi_ticket时间超过7200秒就更改jsapi_ticket
        $jsapi_ticket = $this->get_new_jsapi_ticket($tenant_id);
        $this->system_wechat_jsapi_tickets->update(['jsapi_ticket' => $jsapi_ticket,'time' => date('Y-m-d H:i:s')],['id' => $res['id']]);
        return $jsapi_ticket;//返回jsapi_ticket
    } else {
        return $res['jsapi_ticket'];//正常直接返回数据库存放的jsapi_ticket
    }
}

​

重新获取jsapi_ticket

private function get_new_jsapi_ticket($tenant_id) {
    $result = file_get_contents('https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=' . $this->get_access_token($tenant_id) . '&type=jsapi');
    //get_access_token带着唯一标识获取token
    $result = json_decode($result,true);
    return $result['ticket'];
}

获取当前access_token同获取jsapi_ticket一样数据库表结构为

       

public function get_access_token($tenant_id) {
    $this->load->model('system_wechat_access_token_model','system_wechat_access_token');
    $res = $this->system_wechat_access_token->find(['tenant_id' => $tenant_id]);
    if (!$res || !is_array($res)) {
        $access_token = $this->get_new_access_token();
        // 插入access_token
        $this->system_wechat_access_token->create(['access_token' => $access_token,'time' => date('Y-m-d H:i:s'),'tenant_id' => $tenant_id]);
        return $access_token;
    } else if (time() - strtotime($res['time']) > 7150) {
        $access_token = $this->get_new_access_token();
        // 更新access_token
        $this->system_wechat_access_token->update(['access_token' => $access_token,'time' => date('Y-m-d H:i:s')],['id' => $res['id']]);
        return $access_token;
    } else {
        return $res['access_token'];
    }

}

重新从微信获取access_token

private function get_new_access_token() {
    $result = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $this->app_id . '&secret=' . $this->app_secret);
    $result = json_decode($result,true);
    return $result['access_token'];
}

数组转签名字符串

private function arrToTempStr($arr) {
    $str = '';
    foreach ($arr as $key => $value) {
        $str .= $key . '=' . $value . '&';
    }
    return substr($str,0,-1);
}

微信公众号开发 自定义分享 从前台到Java后台 调用微信JS接口分享朋友圈 20180811写在前面的话 有很多人遇到问题之后问我,结果大多数是因为配置问题,所以请详细阅读前面的配置步骤。 20181016注意事项 收到反馈,之前写的接口即将废弃,源代码中的js接口需要修改,详情请参考https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115中的分享接口,需要修改接口名称和参数列表... 阅读详情

相关推荐

微信公众平台开发:进阶篇(在网页上添加分享到朋友圈、发送给好友、分享等按钮)

微信内嵌浏览器通过 Mac 远程调试 iPhone 上微信自己的网页,我们可以发现微信内嵌浏览器定义了一个私有 JavaScript 对象:WeixinJSBridge,通过操作这个对象的相关方法可以实现分享到微信朋友圈,和判断一个微信号的关注状态以及实现关注指定微信号等功能。分享到朋友圈function weixinShareTimeline(title,desc,link,imgUrl){  

zhoubl668的专栏:远帆,梦之帆! 2550

wx.onMenuShareTimeline使用注意事项

我在开发测试过程中,发现使用wx.onMenuShareTimeline无效果,没有显示我定义的图片、title和链接,经过调试发现原因如下: 1.图片大小要大于300pix才能显示 2.这个方法必须先config成功,然后再wx.ready里才能调用。我直接放到$(function(){})里执行,实践证明是不行的。 wx.config({ debug: true, // 开...

zhouyu629的专栏 396

uniapp - 详细实现H5网页分享给好友和朋友圈,uniApp微信分享详解分享到微信朋友圈和微信好友功能,将当前网页分享页面转发给微信朋友或转发到朋友圈(h5网页或微信公众号接入全流程及示例源码)

uniapp,vue2,vue3,h5平台,H5网页端,uniapp h5 微信分享,uniapp微信公众号h5的分享好友和分享朋友圈,UniApp中实现微信分享功能:步骤详解与最佳实践,H5在微信浏览器中分享好友和朋友圈,分享链接到微信好友,显示标题和缩略图,uni-app H5分享到微信,uni-app:分享页面到微信好友和朋友圈,uniapp微信公众号h5端分享,自定义分享卡片,分享报错,分享按钮失效,如何将网页URL链接分享至微信,IOS端微信分享失效的踩坑及解决方案,H5微信分享报错,微信H5微信

🏆 前端领域优质创作者 1万+

微信“分享到朋友圈”接口— wx.onMenuShareTimeline() 和 onMenuShareAppMessage — 分享给朋友接口

微信“分享到朋友圈”接口 wx.onMenuShareTimeline()  注意事项: 1. 图片大小要大于300pix才能显示; 2. 这个方法必须先config成功,然后再wx.ready里才能调用。直接放到$(function(){})里执行,实践证明是不行的。 wx.config({ debug: true, // 开启调试模式,调用的所有api的返回

xuanjiewu的专栏 10万+

如何为微信小程序添加分享到朋友圈和微信群功能

准备工作 在开始编写代码之前,您需要先在微信开发者工具中创建一个小程序,并获取到小程序的AppId。然后,在小程序后台配置好分享的图片和标题等信息。当然,为了更好地适应不同的需求,您可以根据自己的需求进行定制和扩展。为微信小程序添加分享到朋友圈和微信群的功能,可以使用微信官方提供的API来实现。下面我将为您详细介绍如何使用代码实现。在小程序中,可以通过Page的onLoad函数或其他合适的时机来设置分享到朋友圈的参数。在小程序中,可以通过Page的onLoad函数或其他合适的时机来设置分享到微信群的参数。

wx_linying1029的博客 537

微信h5分享好友和朋友圈

微信自定义分享好友或朋友圈,js代码记录...html页面记得引入三个文件

Dove言和 2233

微信公众号 H5页面 卡片 分享朋友圈和好友

微信公众号 H5页面 卡片 分享朋友圈和好友

唐僧的专栏 5036

解决wx.onMenuShareTimeline出现的问题

wx.onMenuShareTimeline使用注意事项 我在开发测试过程中,发现使用wx.onMenuShareTimeline无效果,没有显示我定义的图片、title和链接,经过调试发现原因如下: 1.图片大小要大于300pix才能显示 2.这个方法必须先config成功,然后再wx.ready里才能调用。我直接放到$(function(){})里执行,实践证明是不行的。 wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

uniapp微信公众号h5的分享好友和分享朋友圈

【代码】uniapp微信公众号h5的分享好友和分享朋友圈。

记录本人工作中遇到的问题、经验总结以及分享。 5476

从建模到调参:基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程解析

本文详细解析了基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程。从运动学建模入手,对比了基于距离与基于位置偏差的两种控制策略,并重点阐述了高精度轨迹跟踪的控制器设计、Simulink仿真搭建及PID参数整定方法,为移动机器人运动控制提供了完整的仿真实践指南。

weixin_29169505的博客 313

FPGA之全数字锁相环(DPLL)

1. 数字锁相环的基本原理和组成 1.1 锁相环(PLL)的简介 锁相环最开始并不是用在数字电路中,而是模拟短路中。对于模拟电路中的锁相环,大家可以参考这篇文章稍微看一下,数字和模拟只是实现的方法不同,但是原理、步骤还是共同的。关于模拟PLL。可以参考一片文章: http://www.sohu.com/a/190569594_464086 首先在学习数字锁相环之前,我们应该先了解什么是锁相环?锁相...

DBLLLLLLLL的博客 5万+

微信公众号H5分享页面内容到QQ,微信好友,QQ空间,朋友圈,如何设置分享卡片的标题,链接,简介和图标

1 使用JS-SDK 2 根据JS-SDK文档完成配置,并使用API完成分享设置,完成设置以后通过右上角的三个点来实现分享 3 注意,完成以上设置后,必须通过公众号或者二维码进入H5,才能实现卡片分享,否则,通过H5地址访问来分享是不生效,分享形式会变成链接地址

weixin_39725702的博客 1091

英伟达笔试1

本文摘要: 使用NAND2门设计4位奇偶校验发生器,通过15个NAND2门实现4输入异或功能,分三级结构完成奇校验计算。 时序分析公式总结: 建立时间约束:T_cq + T_comb(max) + T_setup + T_skew ≤ T_clk 保持时间约束:T_cq + T_comb(min) + T_skew ≥ T_hold 提供了两段路径的具体时序检查公式和建立违规修复方法 分析32位粘滞累积寄存器Verilog代码: 功能:记录输入数据中出现过的所有1位 每个bit独立实现,复位清零,有效输入时

soulermax的博客 166

微信h5实现分享给朋友url改变_微信公众号开发之H5分享SDK接入

之前一直碰到微信里消息里的文章或链接分享到朋友圈或微信好友后,链接的图标和标题都不是想要的(自定义);后来研究了一下微信公众号相关的SDK接入demo;微信在6.5之前的版本好像是微信自己抓取链接或文章的标题/图片(貌似是300*300),但是在6.5版本之后微信变得恶心了需要接入他的分享接口(SDK),效果如下:接入微信分享SDK,可以将这四个参数自定义显示:标题,链接,描述,图标,都可以达到自...

weixin_29147589的博客 747

别再死记硬背了!用51单片机的AD/DA和PWM,亲手做个简易示波器信号发生器

本文详细介绍了如何利用51单片机的PWM和AD/DA功能制作简易示波器信号发生器。通过PWM模拟DAC输出波形,结合XPT2046 ADC进行信号测量,实现方波、三角波和正弦波的生成与显示。项目不仅成本低廉,还能帮助电子爱好者深入理解51单片机的核心功能,是理论与实践结合的绝佳案例。

weixin_28675839的博客 265

Excel插件开发实战:从零封装一个带自定义Ribbon的.xlam工具包

本文详细介绍了如何从零开发一个带自定义Ribbon的Excel插件.xlam工具包。通过VBA和XML技术,读者将学习到插件架构设计、Ribbon界面定制、模块化开发以及企业级部署策略,帮助提升Excel自动化办公效率。

weixin_42531128的博客 516

微信公众号开发中分享功能 分享微信朋友圈/微信好友

微信公众号中经常遇到的问题就是分享链接到微信朋友圈 微信好友一类的需求。 下边走一下需要操作的流程 1.首先再项目中(一般就放到自己的公共文件中引入即可,vue中引入到index.html中)引入微信js 链接。 目前最高版本应该是1.4.0 <script type="text/JavaScript" src="http://res.wx.qq.com/open/js/jweixin-1....

MtangEr的博客 4012

面试题-手撕NMS(非极大值抑制)

非极大值抑制(Non-Maximum Suppression,NMS)是一种常用于目标检测和计算机视觉中的算法,用于去除重叠的边界框,保留最可能是真实目标的边界框。其核心就是对一组检测框,找出其中属于同一个类别且分数最高的那个框,然后把和这个框的IOU值大于阈值的那些框都删掉。

zhaoyqcsdn的博客 1108

vue实现微信分享朋友圈和朋友功能

vue实现微信分享朋友圈和朋友功能 需要认证的公众号,在其后台添加一个安全域名,安全域名用于微信的验证,登录后可在“开发者中心”查看对应的接口权限。 开发文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 具体使用步骤 一、引用JSSDK 1.在需要调用JS接口的页面引入如下JS文件,(支持ht...

_Delete的博客 4038

DFT ATPG提升coverage的方法

采用更精确的故障模型,如桥接故障模型(用于描述电路中不应连接的节点之间的短路故障)和路径延迟故障模型(考虑信号在电路路径上的传输延迟),可以使ATPG工具生成更有效的测试向量来覆盖这些特殊故障。假设电路中有一个与门的输入引脚存在固定为0的故障(stuck - at - 0),D - 算法会分析与门的其他输入以及与门输出连接的后续电路逻辑,从而确定整个电路的输入值,使得当该故障存在时,电路的输出与无故障时不同。通过增加测试向量的类型,如功能测试向量和结构测试向量的结合,可以提高故障覆盖率。

Loving_enjoy的博客 968

ThingsBoard教程(十六):RPC部件的使用

前言 各位读者好,截止目前,ThingsBoard系列文章已经做了十篇,分别是 ThingsBoard教程(一):ThingBoard介绍及安装 ThingsBoard教程(二):租户,租户配置,部件组模块的使用 ThingsBoard教程(三):系统设置模块的使用 ThingsBoard教程(四):规则链简介与操作 ThingsBoard教程(五):客户,资产管理 ThingsBoard教程(六):设备管理 ThingsBoard教程(七):模拟设备遥测 ThingsBoard教程(八):自定义UI T

知无涯 4580

一个PHP文件实现JS-SDK新版微信分享朋友圈,分享给好友功能

前言 现在网上很多关于js-sdk的文章,一搜到处都是,并且有很多不同的实现方法,解决方案,但是均已失效,因为以前的1.0版、1.4版接口都已经丢弃了。 现在已经进入1.6版接口,我们除了要引用jweixin-1.6.0.js之外,还要使用最新的API。 之前的版本是有分享成功、取消分享、分享失败的回调函数的,现在为了防止这个接口的滥用,已经取消了回调,无法检测是否已经分享成功了。 新版...

weixin_35938424的博客 962

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

微信公众号之微信自定义分享

用户在h5 页面中实现微信的分享至好友、分享至朋友圈的功能、且实现的方式为卡片的形式 ,(一个h5界面要求点击右上角三个点后点击微信好友分享带标题和图片给好友。vue项目中,分享携带头部标题、简介和缩略图等信息)。公众号H5的分享只是自定义分享内容,标题、图片、链接等,具体的分享操作还是得通过右上角的三个点分享来拉起分享面板的。直接点击分享是没有图和文字描述的,这就是为什么需要自定义分享的原因。

十一 3634

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

vue+h5+js-sdk 实现分享的功能(分享至好友/朋友圈)

用户在h5 页面中实现微信的分享至好友、分享至朋友圈的功能、且实现的方式为卡片的形式(附带效果图、踩过的坑、注意事项)

Missbelover的博客 6805

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

H5微信分享(好友、朋友圈)默认缩略图、标题和描述设置

最近一个项目用到H5微信分享(好友、朋友圈),中间碰到好多难点,搜了好多才解决,现记录如下 先直接上源码     //分享朋友圈、好友     $.ajax({           url:weburl+'/p/jsapi?url='+encodeURIComponent(location.href),           type:"get",           datatype:"jso...

u012028371的博客 1万+

Java 微信开发(四)生成带参数二维码及分享到朋友圈、好友、QQ

微信公众号中的微信分享到朋友圈、分享到QQ、分享到好友功能都是可以帮助营销活动支持的,今天就说一下公众号生成带参数的二维码分享到朋友圈功能 根据微信公众号提供的开发者文档我们可以看出提供的有方法,我们第一步就要先获取附录1的jsapi_ticket,直接写代码了 他的获取方式和我之前写的获取access_token方法很相似 get请求获取https://api.weixin.qq.com/...

weixin_41690905的博客 4297
上一篇: js文字转换为语音方法
下一篇: 网址
Maybe I Simple
博客等级 码龄9年 36粉丝 83原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值