记录微信分享功能开发

微信小程序开发之转发分享功能 主要介绍了微信小程序开发之转发分享功能的实现,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 立即下载
  1. 配置微信开发的服务器
  2. 配置js安全域名(一共可以配置3个)
  3. 这里使用官方的php js-sdk进行开发(注意此处有坑,如果在前端使用ajax进行调用的话需要按照微信开发文档要求往后台传当前url的值.如果不是则直接用官方的sdk不用修改就可以了),前台使用ajax调用方式的话后端php代码如下:
<?php
require_once "JSSDK.php";//引入官方的sdk

$url = @$_POST['url'];//前台传过来的url的值

$jssdk = new JSSDK("微信appID", "微信secret");

$signPackage = $jssdk->GetSignPackage(urldecode($url));

echo json_encode($signPackage);

jssdk 代码:

<?php

class JSSDK {

  private $appId;

  private $appSecret;



  public function __construct($appId, $appSecret) {

    $this->appId = $appId;

    $this->appSecret = $appSecret;

  }



  public function getSignPackage($url) { //这里接收刚才传过来的url

    $jsapiTicket = $this->getJsApiTicket();



    // 注意 URL 一定要动态获取,不能 hardcode.

    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";

    //把原来获取url的方式给注释掉,需要使用前台传过来的url值
    //$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";


    $timestamp = time();
    $nonceStr = $this->createNonceStr();

    // 这里参数的顺序要按照 key 值 ASCII 码升序排序

    $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";

    $signature = sha1($string);
    $signPackage = array(

      "appId"     => $this->appId,

      "nonceStr"  => $nonceStr,

      "timestamp" => $timestamp,

      "url"       => $url,

      "signature" => $signature,

      "rawString" => $string

    );

    return $signPackage;

  }

  private function createNonceStr($length = 16) {

    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

    $str = "";

    for ($i = 0; $i < $length; $i++) {

      $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);

    }

    return $str;

  }

  private function getJsApiTicket() {

    // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例

    $data = json_decode($this->get_php_file("jsapi_ticket.php"));

    if ($data->expire_time < time()) {

      $accessToken = $this->getAccessToken();

      // 如果是企业号用以下 URL 获取 ticket

      // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";

      $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";

      $res = json_decode($this->httpGet($url));

      $ticket = $res->ticket;

      if ($ticket) {

        $data->expire_time = time() + 7000;

        $data->jsapi_ticket = $ticket;

        $this->set_php_file("jsapi_ticket.php", json_encode($data));

      }
    } else {

      $ticket = $data->jsapi_ticket;

    }

    return $ticket;
  }



  private function getAccessToken() {

    // access_token 应该全局存储与更新,以下代码以写入到文件中做示例

    $data = json_decode($this->get_php_file("access_token.php"));

    if ($data->expire_time < time()) {

      // 如果是企业号用以下URL获取access_token

      // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";

      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";

      $res = json_decode($this->httpGet($url));

      $access_token = $res->access_token;

      if ($access_token) {

        $data->expire_time = time() + 7000;

        $data->access_token = $access_token;

        $this->set_php_file("access_token.php", json_encode($data));

      }

    } else {

      $access_token = $data->access_token;

    }

    return $access_token;

  }



  private function httpGet($url) {

    $curl = curl_init();

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($curl, CURLOPT_TIMEOUT, 500);

    // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。

    // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);

    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);

    curl_setopt($curl, CURLOPT_URL, $url);



    $res = curl_exec($curl);

    curl_close($curl);



    return $res;

  }



  private function get_php_file($filename) {

    return trim(substr(file_get_contents($filename), 15));

  }

  private function set_php_file($filename, $content) {

    $fp = fopen($filename, "w");

    fwrite($fp, "<?php exit();?>" . $content);

    fclose($fp);

  }

}

前端js代码:

//需要引入的微信js文件
<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js" type="text/javascript"></script>

<script type="text/javascript">
$(function(){
  //页面加载完就执行下面分享的函数
  configWechatShare();
});

function configWechatShare(){
    //微信分享配置
    var href=encodeURIComponent(window.location.href.split('#')[0]); //这个url需要进行相应的处理之后才能转送到后台
    // console.log(href);
    var shareTitle="分享的标题";
    var shareDes="分享的描述";
    var shareLogo="http://www.dcmdf.com/Public/Homes/imageg/shareLogo.jpg"; // 分享的logo的url 尺寸300*300
    var shareLink="http://www.dcmdf.com"; //分享的链接

    $.ajax({
//上面第一段代码的url,需要去那里请求微信返回的加密签名        url:'http://www.dcmdf.com/index.php/Home/Index/wechat',
        dataType:"json",
        type:"POST",
        data:{"url":href},
        success:function(json){
            // console.log(json)
            wx.config({
                debug: false, // 进行调试的时候打开,会把报错信息alert出来
                appId: json.appId,
                timestamp: json.timestamp,
                nonceStr: json.nonceStr,
                signature: json.signature,
                //你需要的接口列表
                jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage']
            });
            // console.log(wx.config)
        }
    });

    var options={
        title: shareTitle,
        link: shareLink,
        desc:shareDes,
        imgUrl: shareLogo,
        success: function () {

         console.log("aaaaaaa")
        },
        cancel: function () {
            console.log("失败")
        }
    };
   wx.ready(function(){
        wx.onMenuShareAppMessage(options);
        wx.onMenuShareTimeline(options);
   });
   wx.error(function(res){
        console.log("失败");
   });
};

上面是前台通过ajax调用获取加密签名方式的所有代码,如果是直接用php直接返回加密签名就更简单了,不用往后台传送url了,jssdk里的url可以直接使用官方给的那种方式就可以

.

将指定文件夹下每张用LabelImg标注的图片中标注部分抠出来保存到指定文件夹下。 阅读详情

相关推荐

你不知道的Postman的Mock接口测试,看这一篇就够了

创建Mock服务你可以从Postman已有的测试集(Collection)中创建Mock Server或者直接创建Mock Server(我们这里选择从已有的测试集中创建Mock Server)Mock server详细配置页面,在此页面中我们可以设置:命名Mock Server选择一个环境(可选的),我们可以选择之前设置过的环境,Mock Server将会使用对应环境中设置过的变量在对应的请求和响应中如果想要将Mock Server设置私有访问的,那么可以勾选此选项,不勾选则对所有人可见。

654

探索WeChat Sharing Records:一款强大的微信分享记录管理工具

探索WeChat Sharing Records:一款强大的微信分享记录管理工具 去发现同类优质开源项目:https://gitcode.com/ 在数字化的时代,我们的生活和工作越来越多地依赖于社交媒体平台,尤其是微信。然而,我们在微信上分享的信息、文件和链接往往难以管理和检索。为此,我们向您推荐,这是一个开源项目,旨在帮助用户整理并高效利用他们在微信上的共享历史。 项目简介 WeChat Sh...

gitblog_00064的博客 575

如何从RHEL 8升级到RHEL 9

Red Hat 于 2022 年 5 月 17 日宣布全面推出 RHEL 9。这是 RHEL(Red Hat Enterprise Linux)的最新版本,它具有许多功能和增强功能。

u012748257的博客 1019

实现h5网页微信分享、朋友圈分享功能(微信右上角分享)

要实现微信分享功能,需要使用微信JS-SDK。以下是实现微信分享的步骤: 1.在微信公众平台中注册开发者账号,并创建一个网页应用。 2.在网页中引入微信JS-SDK的JS文件,并在页面加载完成时调用微信JS-SDK的初始化方法。

Tra_velers的博客 9984

利用BMC和KVM远程安装联想服务器Ubuntu 22.04的完整指南

本文提供了一份详尽的指南,介绍如何利用联想服务器的BMC(基板管理控制器)和KVM(键盘、视频、鼠标)重定向功能,远程安装Ubuntu 22.04 LTS操作系统。内容涵盖从准备工作(如获取BMC信息、配置Java环境)、登录BMC并启动远程控制台,到挂载ISO镜像、设置引导以及完成Ubuntu安装与后续配置的全过程。该方法能极大提升服务器部署与运维效率,尤其适用于无法物理接触服务器的场景。

p8q9r0的博客 620

DeepSeek与YOLO融合技术的微信小程序实现方案

本文介绍了一个基于微信小程序和Flask后端的智能图像检测系统。系统采用DeepSeek-7B进行自然语言理解,YOLOv8执行目标检测,并通过融合验证模块确保结果准确性。核心流程包括:用户通过小程序上传图片和文本需求,后端解析意图后执行目标检测,最后验证并返回结果。关键技术包括DeepSeek的指令理解、动态阈值调整和模型优化(ONNX、TensorRT)。系统适用于工业质检等场景,如"检测表面划痕",能自动识别目标并验证结果。部署需GPU服务器,并包含安全机制保障系统稳定运行。

老郑的博客 273

不同平台使用不同技术实现微信好友、朋友圈分享汇总(H5、taro、uni-app)

人生路漫漫,坑,是活久了见。程序猿世界里各种奇葩的需求都有,随之而来的各种坑也是层出不穷。应前IBM同事邀请特来做分享的专题总结。事情前情概述,昨天IBM的同事前来咨询我怎样实现微信分享功能。经过一系列的细细道来。原来他们前端是用uniapp开发的一个app,现在要实现分享功能。他们前端的小伙伴没有这方面的经验,折腾了半天没有眉目。那么接下来我从以下三个方面来解剖如何实现分享。说白了,对于分享功能来说,是一个非常普遍而又常见的功能。但是面临不同的环境、不同的技术栈确实有点头大。

weixin_36989919的博客 6940

使用Python,OpenCV查找图像中的最亮点

这篇博客展示了,为什么在图像中找到最亮的点之前应用高斯模糊是至关重要的。 通过应用高斯模糊,可以将每个给定半径内的像素平均在一起。取平均值可以去除高频噪声,否则会影响cv2.minMaxLoc函数的结果。 一定要研究高斯模糊半径的恰当值。如果取值太小,将会减轻平均值的影响,而忽略了更大、更亮的区域。但是如果半径太大,将无法探测到小的明亮区域。

qq_40985985的博客 3809

从零开始开发微信小程序-分享好友、朋友圈

小程序比较简便的实现分享好友和朋友圈,即可实现全局引用,又可实现个性化分享

superpole的专栏 4833

vue2/3 - H5 移动端网页中调用手机摄像头扫描二维码 / 条形码功能,在h5手机网页里调起相机摄像头进行二维码或条形码扫描效果详细教程(详细示例组件源码,一键复制开箱即用!)

vue扫描二维码条形码,vue网页调用摄像头扫二维码条形码,vue移动端如何实现调用相机扫描二维码,vue移动端扫一扫功能,vue怎么做移动端h5扫一扫功能,vue识别二维码和条形码,vue实现点击按钮调用摄像头扫码,vue调用本地摄像头实现拍照功能,Vue中如何进行二维码生成与扫描,如何实现vue在手机浏览器中调用摄像头实现扫描二维码功能,VUE项目移动端H5调用摄像头扫码,vue项目中实现H5调取摄像头,网页调用摄像头实现二维码扫描功能,vue调用手机摄像头,vue在调用摄像头扫码,vue自定义打开摄像

✅ 精选推荐文章 1万+

使用Simulink对液流电池在微电网中的动态响应进行建模与仿真

本文介绍了使用Simulink对液流电池在微电网中的动态响应进行建模与仿真的方法。通过搭建包含液流电池、双向DC-DC变换器、分布式能源和负载的微电网模型,并设计基于SOC的控制器,详细说明了从模型创建到仿真运行的完整流程。重点分析了液流电池在不同负载条件下的动态特性,评估了系统响应速度、充放电效率和稳定性等性能指标。该仿真方法为验证液流电池在微电网中的应用提供有效工具,有助于优化参数设计和提升系统可靠性。

amy_mhd的博客 136

【微信开发第五章】SpringBoot实现微信分享

在进行微信公众号业务开发的时候,有些时候需要用到微信分享,以卡片的形式分享出去,例如订单信息,用户信息。该篇文章每一步都有记录,力争理解的同时各位小伙伴也能够实现功能

weixin_47316183的博客 3368

64、5G 侧链通信技术详解

本文详细解析了5G侧链通信的关键技术,包括资源感知与选择、UE间协调、混合ARQ、功率控制、信道探测与CSI报告以及侧链同步。资源感知与选择通过周期性或随机方式实现资源分配,UE间协调通过主动或被动方式避免资源冲突。混合ARQ机制确保数据传输可靠性,功率控制和信道探测优化传输质量并减少干扰。侧链同步则通过多种方式确保设备间时间一致性。这些技术相互配合,构建了高效稳定的5G侧链通信体系,适用于智能交通、物联网、应急通信等多个领域,为未来无线通信发展提供强大支撑。

oil88的博客 100

php微信分享图片的后端方法,【后端开发】php实现的微信分享到朋友圈并记录分享次数功能的讲解...

这篇文章主要介绍了php实现的微信分享到朋友圈并记录分享次数功能,结合实例形式分析了php微信分享功能接口调用及分享次数统计具体操作技巧,需要的朋友可以参考下本文实例讲述了php实现的微信分享到朋友圈并记录分享次数功能。分享给大家供大家参考,具体如下:1.引入JS文件2.通过config接口注入权限验证配置3.通过ready接口处理成功验证4.通过error接口处理失败验证JSDK档说明:http...

weixin_31162865的博客 301

Statistics and Machine Learning Toolbox

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android 开发微信群发,Android 记录一次开发微信分享功能的吐槽与思考

在App内潜入分享到微信好友或朋友圈的功能想必大家已经屡见不鲜了,比如Android分享一个网页信息(URL)到微信客户端的代码:/*** 微信分享:分享网页* @param context* @param url* @param title* @param description* @param scene*/public static void shareToWeChatWithWebpage...

weixin_39983404的博客 502

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android 记录一次开发微信分享功能的吐槽与思考

Android 微信SDK分享功能的缩略图大小限制问题

滴水穿石,点石为金 1851

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

EasyWeChat使用(laravel框架下)

最近做了个项目是关于微信网页开发的,今天记录下在做项目中的关于微信这块遇到的一些坑 关于微信这块,用的是EasyWeChat,提高了开发的效率.在看EasyWeChat这个文档的时候发现了有专门针对laravel 框架的包,所以就用了laravel-wechat 首先是安装这个composer包 composer require "overtrue/laravel-wechat:~3.0"...

weixin_34128501的博客 630

vue微信网页开发微信JS-SDK自定义分享踩坑

vue微信网页开发自定义分享踩坑关于项目思路准备上代码微信网页开发的坑微信签名:微信授权分享页面的标题 关于项目 之前做的微信网页开发项目,用vue写的,前后端分离项目,使用vue-cli3搭建,路由模式history。客户要求销售员登录后可分享相关文章网页,并且分享标题内容自定,而客户需要授权登录,客户可以转发给客户,并且带上销售员信息。手机微信浏览器,电脑微信浏览器打开可以获取用户信息,记录用...

东扯葫芦西扯瓜——前端小菜鸟的博客 1198

android APP 中微信分享功能实现 的总结

//花了很长时间最终完成了微信分享功能,中间走了很多弯路,在此做一下小结,希望对在应用中使用到微信分享的朋友有所帮助。 主要问题就是下面两个: 1、为什么运行了项目之后,微信分享只是闪了一下就没有了? 这个问题的解决办法就是等待微信审核通过,然后自然就能在应用中使用微信分享了。 2、为什么运行项目时微信分享可以使用,但是当打包成APK文件之后再安装到手机上之后...

weixin_30340353的博客 525

微信JS-SDK updateAppMessageShareData安卓不能自定义分享

最近开发一个项目时,有微信H5网页自定义分享功能,使用了微信JS-SDK的分享到好友和分享到朋友圈功能。 微信开发文档这样写的 自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0) wx.ready(function () { //需在用户可能点击分享按钮前就先调用 wx.updateAppMessageShareData({ title: '', // 分享标题 desc: ''...

Mangojjx的博客 6739

微信公众平台开发[1]——微信分享

微信公众平台开发]——微信分享 最近一直在做一些和微信相关的项目,中间遇到了许多bug,浪费了我超多时间,故做记录,为了成长,也为了谨记!!! 第一步 就是去官网下载demo,附上链接(https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html),PHP的demo很全,省了不少事。 功能快捷键 撤销:Ctrl/C...

qq_43709842的博客 217

微信记录 android id,记录微信分享的一些坑

在帮别的项目干活时遇到了要做微信分享的功能,当时觉得这不就是小case(因为之前都写过),可能是由于那边项目的人不太懂吧,居然没有提前去申请微信app_id,没关系,反正写过,打开之前的项目,复制粘贴,他们申请好了肯定就能用了,先看看我是怎么写的。1、添加最新的微信分享sdk:compile'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'...

weixin_32770697的博客 298

微信小程序分享功能开发及调试方法

首先说一下使用方法如下,Button组件设置open-type="share"即可触发onShareAppMessage完成分享功能 <button class="toudi" open-type="share" catchtap="toujianli" data-qyuid='{{[item.uid,item.id,3,item.provinceid,item.three_cityid]}}' wx:if="{{istuijian==1}}">分享职位</button> onS

weixin_44938345的博客 5070

基于微信小程序的宝宝成长记录分享系统设计与实现

今天带来的是基于微信小程序的宝宝成长记录系统,微信小程序作为一种新型的移动应用程序,已经成为人们生活中不可或缺的一部分。因此,基于微信小程序的宝宝成长记录系统应运而生。宝宝成长记录系统是一种记录宝宝成长过程的工具,它可以记录宝宝的身高、体重、牙齿生长情况、喂养情况、睡眠情况等各种信息。这些信息对于家长来说非常重要,因为它们可以帮助家长更好地了解宝宝的成长情况,及时发现宝宝的健康问题,并采取相应的措施。

qq_15801219的博客 1782

【问题】微信分享测试环境分享

【问题】:在测试环境中,微信分享分享给好友的链接是当前页面的链接,期望为接口返回的特定链接。 【解决】: 在测试反馈给我这个问题的时候,我先去正式环境看了一下,没有这个问题。 回想了一下近期代码的更改,也没有涉及到相关的更改。 得出初步结论:可能是测试环境配置的问题,造成分享不正确。不过虽然大概率是测试配置原因,问题还是需要定位的,看什么原因造成测试环境...

weixin_30314631的博客 399

微信分享遇到的坑

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34202952的博客 171
上一篇: OneinStack中LNMP环境给Nginx开启pathinfo
下一篇: php curl请求https接口返回curl: (60) SSL certificate problem: unable to get local issuer certificate 错误
姜红杰
博客等级 码龄10年 9粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值