微信网页开发分享

2023-11-09

首先提供一个微信官方地址点击打开链接

早期web项目中经常用到微信分享功能,现在整理一下,供记忆与分享,开发环境为JAVA +H5。

1、微信的开发环境不在多说,大概为:使用已备案的域名,设置“公众号设置”的三项域名、

设置开发者密码(AppSecret)、调试通过核心服务地址。

2、公众平台以access_token为接口调用凭据,来调用接口,所有接口的调用需要先获取access_token,access_token在2小时内有效,过期需要重新获取,但1天内获取次数有限,开发者需自行存储。在线测试地址点击打开链接

 接口地址:JSAPI_Access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";

 提供必要参数: String tokenURL=JSAPI_Access_token+"&appid="+appid+"&secret="+secret;3、用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket);

String JSAPI_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi";

以上JS-SDK接口是基础,比较简单,注意细节即可。

4、签名计算

 

public static Map<String, String> sign(String jsapi_ticket, String url) {
		Map<String, String> ret = new HashMap<String, String>();
		String nonce_str = echostr();
		String timestamp = getTimeStamp();
		String string1;
		String signature = "";
		string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str + "timestamp=" + timestamp +     "&url=" + url;
		//System.out.println(string1);
		try {
			MessageDigest crypt = MessageDigest.getInstance("SHA-1");
			crypt.reset();
			crypt.update(string1.getBytes("UTF-8"));
			signature = byteToHex(crypt.digest());
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		ret.put("url", url);
		ret.put("jsapi_ticket", jsapi_ticket);
		ret.put("nonceStr", nonce_str);
		ret.put("timestamp", timestamp);
		ret.put("signature", signature);
		return ret;
	}
5、WEB前端js函数封装,页面加载是注册分享事件


function wxSharecfg(response, setFx) {
    var Request = new Object();
    Request = GetRequest();
    var d = Request["demo"];
    wx.config({
        debug: false,
        appId: response.appId,
        timestamp: response.timestamp,
        nonceStr: response.nonceStr,
        signature: response.signature,
        jsApiList: [
            'checkJsApi',
            'onMenuShareTimeline',
            'onMenuShareAppMessage',
            'onMenuShareQQ',
            'onMenuShareWeibo',
            'onMenuShareQZone'
        ]
    });
    wx.ready(function () {
        var shareData = {
            imgUrl: urlStr ,//图片地址
            link: url,
            title: "标题",
            desc: setFx.desc,
            success: function (res) {
                //alert('已分享');    
            },
            fail: function (res) {
                    //'分享失败!'
            }
        };
        wx.onMenuShareAppMessage(shareData);
        wx.onMenuShareTimeline(shareData);
        wx.onMenuShareQQ(shareData);
        wx.onMenuShareWeibo(shareData);
        wx.onMenuShareQZone(shareData);
    });
}












本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信网页开发分享 的相关文章

随机推荐

  • ue4 classuobject没有成员beginplay_关于UE4使用的一些想法(一)

    今天 在单步调试程序时 对照引擎 突然有了些想法 以前没注意到 是因为以前都是用引擎的dll 并没有这么调试过 1 每个引擎都是有自己的初始化和帧循环 使用引擎的过程 就是相当于把引擎当做工厂 自己的数据相当于原材料 进行加工的过程 不同的
  • MySQL错误记录(1)--File './binlog.index' not found

    昨天感觉慢查询日志较大 然后在 var log 下面随意创建了一个mysql的slow log文件 把路径写入了my cnf文件中 结果今天启动机器发现mysql无法正常启动了 查看日志文件错误如下 一般发现 13 Permission d
  • 学习笔记-哈希表(散列)

    哈希表 散列 解决一个问题 有一个公司 当有新的员工来报道时 要求将该员工的信息加入 id 性别 年龄 住址 当输入该员工的 id 时 要求查找到该员工的所有信息 要求 不使用数据库 尽量节省内存 速度越快越好 gt 哈希表 散列 散列表
  • idea拉取Git代码重新输入用户信息操作

    IDEA修改git账号及密码的方法 file gt settings gt passwords 默认是保存了用户密码 直接选选择 Do not save 重新启动idea 再次拉取Git代码会提示输入用户名和密码弹框 输入用户名和密码后即可
  • Queue与Deque的区别

    前言 在研究java集合源码的时候 发现了一个很少用但是很有趣的点 Queue以及Deque 平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用 但是一直都不知道Queue的作用 于是就直接官方文档好了
  • Linux系统的LOG日志文件及入侵后日志的清除

    UNIX网管员主要是靠系统的LOG 来获得入侵的痕迹 当然也有第三方工具记录入侵系统的 痕迹 UNIX系统存放LOG文件 普通位置如下 usr adm 早期版本的UNIX var adm 新一点的版本使用这个位置 var log 一些版本的
  • 华为机试HJ99 自守数

    HJ99 自守数 Python 题目 解题思路 代码 结果 题目 解题思路 1 多组输入 需要循环 2 n以内 从0到n 循环就要记得有n 循环判断平方后的字符串以n的字符串结尾 来判断是自守数 代码 while True try n in
  • 宏、条件编译(#ifdef)、#include(头文件包含)、#error和 #pragma的区别、#和##的含义和应用

    1 在C语言预处理阶段 编译器首先对代码的处理时 先去注释 再宏替换 2 在源文件的任何地方 宏都是可以定义的 与是否在函数内外无关 3 宏的作用范围是 从定义处开始 往后的直到程序结束都是有效的 可以使用 undef取消宏定义的 4 if
  • redis 从机出现master_link_status:down提示解决方法

    小编使用的redis的版本号是5 0 5 可能会略有不同 例如redis conf配置文件中 没有slaveof这一项配置 使用命令配置主从复制 今天在使用命令slaveof或者是replicaof命令配置redis主从复制时 从机出现ma
  • Vue——vuedraggable拖拽组件使用文档总结

    vuedraggable官方文档地址 https www itxst com vue draggable j6vzfv6r html Draggable为基于Sortable js的vue组件 用以实现拖拽功能 关于Vue Draggabl
  • ue5获取从http中get到的json信息的蓝图节点是什么?

    在 Unreal Engine 5 UE5 中 您可以使用 HTTP 请求 蓝图节点来发送 HTTP 请求 并使用 HTTP 响应 蓝图节点来获取 HTTP 响应 要获取从 HTTP 中 GET 到的 JSON 信息 您需要执行以下步骤 使
  • webpack之externals解析

    1 是什么 指定排除掉不想被webpack打包的模块 被排除掉的模块 是要在运行时依赖用户环境去获取的 所以 用户的环境必须有被排除掉的包 2 既然模块不被打包 那么项目中的引入语句如何处理呢 webpack会根据你对模块的配置 将引入语句
  • CentOS7(Linux)详细安装教程(图文详解)

    一 软件准备 本文CentOS7安装在VMware Workstation虚拟机软件 故安装前请自行安装该软件 VMware Workstation官网链接 VMware Workstation官网地址 CentOS7下载地址 centos
  • 技术运营的工作是什么?

    什么是技术运营 技术运营到底是干什么的 本问作者艺璇分享了她的工作心得 关于作者 我于15年本科毕业加入阿里 4年前端开发 4年技术运营 目前主要工作方向是技术发展和技术影响力的打造 很开心受到邀请 来跟大家一起分享交流下 主要包含以下几部
  • 面试高频:为什么不用定时任务实现关闭订单?

    在电商 支付等领域 往往会有这样的场景 用户下单后放弃支付了 那这笔订单会在指定的时间段后进行关闭操作 细心的你一定发现了像某宝 某东都有这样的逻辑 而且时间很准确 误差在1s内 那他们是怎么实现的呢 一般的做法有如下几种 定时任务关闭订单
  • pytest当中conftest.py的使用

    目录 一 规则 1 conftest py文件是单独存放的一个单独夹具文件 名称不可修改 2 用处可以在不同的py文件当中使用同一个fixture函数 3 原则conftest py 要和运行的用例放在同一层级 例如testcase包下面
  • centos7服务器升级harbor-2.0.6至2.7.0

    centos7服务器升级harbor 2 0 6至2 7 0 1 升级harbor 2 0 6至2 4 0 使用指南 由于2 0 6版本不能直接升级到2 7 0版本 所以需要先过渡到2 4 0版本 原因是PG版本升级不兼容 2 0 6使用P
  • 如何利用TL431设计一个可调电压源

    TL431是一个三脚电压可控的稳压器件 常用的封装有TO 92 SOT 23 SOT 89 电路符号是这个 TL431常被用在参考电压 基准电压电路 用来替代稳压管 其中1脚是reference 2脚是Anode 3脚是Cathode TL
  • ARP(地址解析协议)

    ARP Address Resolution Protocol 地址解析协议 可以在以太网上 根据已知的IP地址查找主机的硬件地址 一 ARP的工作原理 我们以以太网的工作环境作为背景来探讨这一协议 串行链路由于是点到点链路 故而不需要AR
  • 微信网页开发分享

    首先提供一个微信官方地址点击打开链接 早期web项目中经常用到微信分享功能 现在整理一下 供记忆与分享 开发环境为JAVA H5 1 微信的开发环境不在多说 大概为 使用已备案的域名 设置 公众号设置 的三项域名 设置开发者密码 AppSe