JSSDK实现微信自定义分享---java 后端获取签名信息
一、首先说下关于微信Access_token的问题,微信Access_token分为2中:
1.授权token获取方式:
这种token需要code值(如何获取code值查看官方文档)
"https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appId + "&secret=" + appsecret + "&code=" + code + "&grant_type=authorization_code";
2.基础token获取方式:
"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appsecret;
我们下面用token获取分享签名 jsapi_ticket 就是使用基础token,如果用错了token会错以为token过期。
二、下面是获取jssdk 签名的代码
private JsSdkDto find() throws Exception{
JsSdkDto jsSdkDto = new JsSdkDto();
/** 前端传的 需要授权分享的url **/
String authorizationUrl = "www.baidu.com";
/** 获取微信access_token的url **/
String weChatUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
String appId = "1232we3234ew"; //公众号的appId
String secret = "324323dfs3243qew"; //公众号号的密钥
String Url = MessageFormat.format(weChatUrl, appId,secret);
URL url = new URL(Url);
/** 获取微信access_token **/
JSONObject jsonObjectAccessToken;
try (InputStream inputStream = url.openStream()) {
jsonObjectAccessToken = JSONObject.parseObject(IOUtils.toString(inputStream));
}
if (jsonObjectAccessToken.containsKey("errmsg")) {
throw new FrankyException("获取token,原因:" + jsonObjectAccessToken.getString("errmsg"));
}
String access_token = jsonObjectAccessToken.getString("access_token");
/** 获取 jsapi_ticket **/
String getUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+access_token+"&type=jsapi";
JSONObject jsonObject = wechatService.urlConnector(getUrl);
if (!jsonObject.get("errmsg").equals("ok")){
throw new FrankyException(ErrorCode.PARAMETER_INVALID,jsonObject.get("errmsg").toString());
}
String jsapi_ticket = jsonObject.getString("ticket");
String noncestr = WXPayUtil.generateNonceStr();
String timestamp = String.valueOf(System.currentTimeMillis()/1000);
/** 拼装字符转 注意:对所有待签名参数按照字段名的 ASCII 码从小到大排序(字典序)后,
* 使用 URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串 string1。
* 这里需要注意的是所有参数名均为小写字符。**/
String str = "jsapi_ticket="+jsapi_ticket+
"&noncestr="+noncestr+"×tamp="+timestamp+"&url="+url;
/** 对字符串进行 Sha1签名 **/
String s = sha1Hex(str);
jsSdkDto.setAppId(appId);
jsSdkDto.setNonceStr(noncestr);
jsSdkDto.setTimeStamp(timestamp);
jsSdkDto.setSignature(s);
return jsSdkDto;
}
JSSDK实现微信自定义分享---java 后端获取签名信息的更多相关文章
- ThinkPHP5集成JS-SDK实现微信自定义分享功能
最近开发一个项目,需要将链接分享给好友时能够自定义标题.简介和logo,现将ThinkPHP5集成JS-SDK实现微信自定义分享功能的过程整理成文. 一.准备工作 1.认证的公众号 不管是订阅号还是服 ...
- H5微信自定义分享链接(设置标题+简介+图片)
起源:最近公司在做招募广告的html5页面,然后做出来后,产品提出一个问题,需要分享出去的链接是卡片形式,内容也要自己定义,这下就难到我了,因为是第一次遇到这种需求,果断百度,然而,我就像大家一样,看 ...
- Vue微信自定义分享时安卓系统config:ok,ios系统config:invalid signature签名错误,或者安卓和ios二次分享时均config:ok但是分享无效的解决办法
简述需求:要求指定页面可以进行微信自定义分享(自定义标题,描述,图片,链接),剩下的页面隐藏所有基础接口.二次分享依然可以正常使用,切换至其他页面也可以正常进行自定义分享. 这两天在做微信自定义分享的 ...
- 生成二维码、微信自定义分享到朋友圈、ipa不从应用商店安装
生成二维码网址:http://www.liantu.com/ 微信自定义分享到朋友圈:http://www.cnblogs.com/memor-y/p/6728179.html ipa不从应用商店安装 ...
- Android apk签名详解——AS签名、获取签名信息、系统签名、命令行签名
Apk签名,每一个Android开发者都不陌生.它就是对我们的apk加了一个校验参数,防止apk被掉包.一开始做Android开发,就接触到了apk签名:后来在微信开放平台.高德地图等平台注册时,需要 ...
- JSSDK微信自定义分享
背景:15年之前的微信分享只需要加入一段js就可以实现.后来微信官方全部禁止了.现在的微信分享全部得使用jssdk. 一.分享功能: 在微信内(必须在微信里)打开网站页面,分享给朋友或者分享到朋友圈时 ...
- NodeJs实现自定义分享功能,获取微信授权+用户信息
最近公司搞了个转盘抽奖的运营活动,入口放在了微信公众号里,好久没碰过微信了,刚拾起来瞬间感觉有点懵逼....似乎把之前的坑又都重新踩了一遍,虽然过程曲折,不过好在顺利完成了,而且印象也更加深刻了,抽时 ...
- JSSDK微信自定义分享朋友圈
服务项目 新手技术咨询 企业技术咨询 定制开发 服务说明 QQ有问必答 QQ.微信.电话 微信开发.php开发,网站开发,系统定制,小程序开发 价格说明 200元/月 1000/月 商议 ...
- 微信JSSDK分享朋友圈微信自定义分享接口
服务项目 新手技术咨询 企业技术咨询 定制开发 服务说明 QQ有问必答 QQ.微信.电话 微信开发.php开发,网站开发,系统定制,小程序开发 价格说明 200元/月 1000/月 商议 ...
随机推荐
- kafka和mqtt的区别是什么?
两者都是从传统的Pub/Sub消息系统演化出来的,但是进化方向不一样,比较如下: Kafka是为了数据集成的场景,与以往Pub/Sub消息总线不一样,通过分布式架构提供了海量消息处理.高容错的方式存储 ...
- Spring Security入门(3-1)Spring Security的登录页面定制
- java集合小知识的复习
*Map接口 Map<k,v>接口中接收两个泛型,key和value的两个数据类型 Map中的集合中的元素都是成对存在的每个元素由键与值两部分组成,通过键可以找对所对应的值.值可以重复,键 ...
- pthon/零起点(一、集合)
pthon/零起点(一.集合) set( )集合,集合是无序的,集合是可变的,集合是可迭代的 set()强型转成集合数据类型 set()集合本身就是去掉重复的元素 集合更新操作案列: j={1,2,3 ...
- python request
python request a. 客户端向服务端发送多层字典的值 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 obj = ...
- Java-NIO(五):通道(Channel)的数据传输与内存映射文件
通道(Channel)的数据传输(采用非直接缓冲区) @Test public void testChannel() throws IOException { FileInputStream file ...
- git的理论基础
GIT是目前世界上最先进最牛逼的分布式版本控制系统git维护的三棵树分别是工作区域.暂存区域.git仓库工作区域:就是你平时存放项目代码的地方暂存区域:用于临时存放你的改动,事实上它只是一个文件,保存 ...
- js的处理技巧
目前来说,处理js有两种方法: 1,通过第三方工具执行js脚本, selenium,会驱动浏览器把js全部加载出来并返回. 2,手动模拟js的执行 2.1)找到js链接,可以在idle中用print( ...
- html2canvas 实现dashed虚线边框
html2canvas是一个将html元素生成canvas的库,绘制的canvas大部分样式和CSS一致.比如截止1.0.0-alpha.12,虚线边框依然绘制为实线,border-collapse依 ...
- Django中的可复用模板
将文件转换成可复用的模板,便可以通过模板的基本布局来设计未来项目. startproject的模板是一个目录或zip文件,当命令运行时形成Django模板. 默认情况下,所有Python源文件都会被制 ...