JAVA从入门到精通之微信js-sdk+JAVA实现“分享到朋友圈”和“发送给朋友”功能详解[Java代码]
龚超 2018-07-18 来源 : 阅读 857 评论 0

摘要:本文主要向大家介绍了JAVA从入门到精通的微信js-sdk+JAVA实现“分享到朋友圈”和“发送给朋友”功能详解,通过具体的内容向大家展示,希望对大家在JAVA从入门到精通的路上走的更远。

本文主要向大家介绍了JAVA从入门到精通的微信js-sdk+JAVA实现“分享到朋友圈”和“发送给朋友”功能详解,通过具体的内容向大家展示,希望对大家在JAVA从入门到精通的路上走的更远。

主要为以下实现步骤:

1.绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。(特别提示不需要加上http或者https,吃过亏)

2.页面引入js文件


3.通过config接口注入权限验证配置


wx.config({


debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。


appId: '', // 必填,公众号的唯一标识


timestamp: , // 必填,生成签名的时间戳


nonceStr: '', // 必填,生成签名的随机串


signature: '',// 必填,签名,见附录1


jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2


});


复制代码

4.通过ready接口处理成功验证


wx.ready(function(){


//详细代码


});


复制代码

5.通过error接口处理失败验证


wx.error(function(res){});

复制代码

详细页面代码



复制代码

java后台action代码:


//微信分享

public void shareToFriend(){

HttpServletRequest request = ServletActionContext.getRequest();

String timeStamp = Sha1Util.getTimeStamp();//时间戳

String nonceStr = WxConfig.getUUID();//随机字符串,不长于32位

String url=request.getParameter("url");

String signature = WxConfig.getSignature("APPId", "APP_secret", url, timeStamp, nonceStr);

request.setAttribute("timeStamp", timeStamp);

request.setAttribute("nonceStr", nonceStr);

request.setAttribute("url", url);

request.setAttribute("signature", signature);

WXjssdk result = new WXjssdk(timeStamp,nonceStr,signature,url);

CommonUtil.returnMsg(ServletActionContext.getResponse(), new Gson().toJson(result));

}


复制代码

WxConfig.java代码 


">//jsapi_ticket

public final static String WEIXIN_JSAPI_TICKET_URL ="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";


//access_token

public static String getAccessToken(String appId,String appSecret){

String access_token;

access_token = mapToken.get("accessToken");

if(access_token==null){

String url = HttpUtil.WEIXIN_HOST_API + "/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appSecret;

String menuJsonStr = HttpUtil.get(url);

final Type type = new TypeToken<Map>() {}.getType();

final MapaccessTokenInfo = new Gson().fromJson(menuJsonStr, type);

try{

access_token = accessTokenInfo.get("access_token").toString();

Object expires_in = accessTokenInfo.get("expires_in");

mapToken.put("accessToken", access_token);

logger.info("access_token:"+access_token+";expires_in:"+expires_in);

}catch (JSONException e) {

access_token = null;

e.printStackTrace();

logger.error("errcode:{}:"+accessTokenInfo.get("errcode")+"errmsg:{}:"+accessTokenInfo.get("errmsg"));

}

}

return access_token;

}


//jsapi_ticket

public static String getJsapiTicket(String accessToken){

String ticket;

ticket = mapTicket.get("ticket");

if(ticket==null){

String url = HttpUtil.WEIXIN_HOST_API + "/cgi-bin/ticket/getticket?access_token="+accessToken+"&type=jsapi";

String menuJsonStr = HttpUtil.get(url);

final Type type = new TypeToken<Map>() {}.getType();

final MapticketInfo = new Gson().fromJson(menuJsonStr, type);

try{

ticket = ticketInfo.get("ticket").toString();

String expires_in = ticketInfo.get("expires_in").toString();

mapTicket.put("ticket", ticket);

logger.info("jsapi_ticket:"+ticket+";expires_in:"+expires_in);

}catch (JSONException e) {

ticket = null;

e.printStackTrace();

logger.error("ticket errcode:{}:"+ticketInfo.get("errcode")+"errmsg:{}:"+ticketInfo.get("errmsg"));

}

}

return ticket;

}


//生成随机字符串UUID

public static String getUUID(){

String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");

return uuid;

}


//JS-SDK Signature

public static String getSignature(String appId,String appSecret,String url,String timeStamp,String nonceStr){

String accessToken = getAccessToken(appId,appSecret);

String jsapi_ticket = getJsapiTicket(accessToken);

logger.info("accessToken==="+accessToken);

String signValue = "jsapi_ticket="+jsapi_ticket+"&noncestr="+nonceStr+"×tamp="+timeStamp+"&url="+url;

logger.info("微信JS-SDK权限验证的签名串:"+signValue);

//这个签名.主要是给加载微信js使用.别和上面的搞混了.

String signature = Sha1Util.getSha1((signValue));

logger.info("微信JS-SDK权限验证的签名:"+signature);

return signature;

}


复制代码

另外项目用到的Sha1Util.java和MD5Util.java可以直接在平台下载。

希望对JAVA有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言JAVA频道!

本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

擅长针对企业软件开发的产品设计及开发的细节与流程设计课程内容。座右铭:大道至简!

  • 370
    文章
  • 22913
    人气
  • 87%
    受欢迎度

已有23人表明态度,87%喜欢该老师!

进入TA的空间
求职秘籍 直通车
  • 索取资料 索取资料 索取资料
  • 答疑解惑 答疑解惑 答疑解惑
  • 技术交流 技术交流 技术交流
  • 职业测评 职业测评 职业测评
  • 面试技巧 面试技巧 面试技巧
  • 高薪秘笈 高薪秘笈 高薪秘笈
TA的其他文章 更多>>
WEB前端必须会的基本知识题目
经验技巧 93% 的用户喜欢
Java语言中四种遍历List的方法总结(推荐)
经验技巧 91% 的用户喜欢
Java语言之SHA-256加密的两种实现方法详解
经验技巧 75% 的用户喜欢
java语言实现把两个有序数组合并到一个数组的实例
经验技巧 75% 的用户喜欢
通过Java语言代码来创建view的方法
经验技巧 80% 的用户喜欢
其他海同师资 更多>>
吕益平
吕益平 联系TA
熟悉企业软件开发的产品设计及开发
孔庆琦
孔庆琦 联系TA
对MVC模式和三层架构有深入的研究
周鸣君
周鸣君 联系TA
擅长Hadoop/Spark大数据技术
范佺菁
范佺菁 联系TA
擅长Java语言,只有合理的安排和管理时间你才能做得更多,行得更远!
金延鑫
金延鑫 联系TA
擅长与学生或家长及时有效沟通
经验技巧30天热搜词 更多>>

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程