VPS参考测评推荐
专注分享VPS主机优惠信息
衡天云优惠活动
华纳云优惠活动

关于微信自定义分享功能的实现代码(手机微信分享代码)

主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情!
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作

本文分享的内容是关于微信自定义分享功能的实现代码。内容很详细。有需要的朋友可以参考一下,希望对你有所帮助。

在前端,开发了一个信息项目。但是销售部门推广微信时,分享链接直接是网页链接加分享符号,比较难看,不正规,所以我们研究了微信的定制分享功能。

准备工作:

1.在微信官方账号中认证appId、appSecret。

2.获取微信信息的各种链接(在此部分中,找到微信自定义共享API,网址为:https://mp.weixin.qq.com/wiki?t = resource/RES _ main & id = MP 1421141115)

#获取访问令牌请求地址getaccesstoken URL:https://api.weixin.qq.com/cgi-bin/token?. Grant _ type = client _ credential & AppID = % s & secret = % s #获取访问令牌getaccesstokenaouthurl:https://api.weixin.qq.com/sns/oauth2/access_token?. AppID = % s & secret = % s & code = % s & Grant _ type = authorization _ code #获取用户基本信息请求地址getuserinfourl:https://api.weixin.qq.com/sns/userinfo?. Access _ Token = % s & OpenID = % s & lang = zh _ cn #获取代码getcodeurl:https://open.weixin.qq.com/connect/oauth2/authorize?. AppID = % s & redirect _ uri = % s & response _ type = % s & scope = % s & state = % s # we chat _ redirect # Get ticket gettickurl:https://api.weixin.qq.com/cgi-bin/ticket/getticket?.访问令牌=%s&type=jsapi

3 .控制器层

/* * *微信配置信息实体*/@ autowired私有微信属性weixin properties;//微信参数私有字符串accessToken私有字符串jsApiTicket//获取参数的瞬间,private Long getTiketTime = 0Lprivate Long getTokenTime = 0L//参数的有效时间,单位为秒(s),私有长令牌过期时间= 0lprivate Long ticket expiretime = 0L;/* * *微信自定义分享*/@ request mapping(value =“/getshareinfo“,method = RequestMethod。POST)公共地图getShareInfo(Httpservlet请求,http servlet响应响应,字符串URL){//当前时间longnow = system。current time millis();//判断accesstoken是否已经存在或令牌是否已过期。isblank(访问令牌)||(现在是-GetToken Time》令牌过期时间* 1000)){ JSON Object Token info = getaccessToken();if(token info!= null){ access token = token info . getstring(“access _ token“);tokenExpireTime = tokeninfo . getlongvalue(“expires _ in“);//获取token gettokentime = system的时间。current time millis();log . info(“access token = = = =》“+access token);log . info(“token expiretime = = = =》“+token expiretime+“s“);log . info(“getTokenTime = = = =》“+getTokenTime+“ms“);} else { log . info(“= = = =》token info为null ~“);log . info(“= = = =》获取tokenInfo失败,请做一些检查~“);} }//判断jsApiTicket是否已经存在或过期。is blank(JSAPI ticket)| |(now -gettikettime》票证过期时间* 1000){ JSON object ticket info = getjsapi ticket(access token);如果(ticketInfo!= null){ log . info(“ticket info = = = =“+ticket info . tojsonstring());jsapi ticket = ticket info . getstring(“ticket“);ticket expiretime = ticket info . getlong value(“expires _ in“);getTiketTime = system . current time millis();log . info(“jsapi ticket = = = =》“+jsapi ticket);log . info(“ticket expiretime = = = =》“+ticket expiretime+“s“);log . info(“getTiketTime = = = =》“+getTiketTime+“ms“);} else { log . info(“= = = =》ticket info为null ~“);log . info(“= = = =》获取tokenInfo失败,请做一些检查~“);} }//生成微信权限验证的参数映射we chat param = makewxticket(JSAPI ticket,URL);返回微信参数;}//获取访问令牌私有JSON对象getaccessToken(){//StringAccessTokenURL = https://api.weixin.qq.com/cgi-bin/token?. grant _ type = client _ credential & APPID = APPID & secret = app secret//在微信端获取访问令牌字符串请求URL = string . format(weixinproperties . getaccessToken URL()、weixinproperties.getappid()、weixinproperties . getappsecret();string result = send(request URL);JSON object JSON object = JSON . parse object(result);返回jsonObject}//get ticket private JSON object getjsapticket(string Access _ token){//stringpapitickeURL = https://api.weixin.qq.com/cgi-bin/ticket/getticket?. Access _ token = Access _ token & type = jsapi//通过acessToken获取票证字符串请求URL = string . format(weixinproperties . getgettickurl()、Access _ token);string result = send(request URL);JSON object JSON object = JSON . parse object(result);返回jsonObject}//生成用于微信权限验证的参数公共映射makewxticket(String JSAPI ticket,String URL){ Mapret = new hashmap();string non centr = createnoncentr();字符串timestamp = create timestamp();String string1字符串签名=““;//请注意,此处的参数名称必须全部小写,并且必须是有序的string 1 =“jsapi _ ticket =“+jsapi ticket+“& non centr =“+non centr+“& timestamp =“+timestamp+“& URL =“+URL;log . info(“string 1 = = = = =》“+string 1);请尝试{ message digest crypt = message digest . getinstance(“SHA-1“);crypt . reset();crypt . update(string 1 . getbytes(“ut F-8“));signature = byteToHex(crypt . digest());log . info(“signature = = = = =》“+signature);} catch(nosuchalgorithm exception e){ log . error(“we chat controller . makewxticket = = = = = Start“);log . error(e . getmessage();log . error(“we chat controller . makewxticket = = = = = End“);} catch(unsupportdencodingexception e){ log . error(“we chat controller . makewxticket = = = = = Start“);log . error(e . getmessage();log . error(“we chat controller . makewxticket = = = = = End“);} ret . put(“URL”,网址);ret . put(“jsapi _ ticket“,jsapi ticket);ret . put(“non centr”,非中心);ret.put(“时间戳”,时间戳);ret . put(“signature”,签名);ret . put(“appid“,weixinproperties . get appid());返回ret}/* * *发送请求* * @ param URL * @ return * @ throws exception */string Send(string URL){ return httpclienttools . post(URL);}//字节数组转换为十六进制字符串私有静态字符串bytetohex(final byte【】hash){ formatter formatter = new formatter();for(byte b:hash){ formatter . format(“% 02x“,b);} String result = formatter . tostring();formatter . close();返回结果;}//生成随机字符串私有静态字符串createnoncentr(){ returnuuid . randomuuid()。tostring();}//生成时间戳私有静态字符串create timestamp(){ return long . tostring(system。current time millis()/1000);}

4.介绍要共享的share.js页面。

$(function(){ var URL = location . href . split(& # 39;#').toString();//url不能被写入dead $。Ajax({ type:“post“,URL:“/user/log in/getshareinfo“,datatype:“JSON“,async: false,data:{url:url},success:function(data){ wx . config({ debug:false,////生产环境需要通过微信服务号在后台关闭调试模式appId: data.appid,//appId查看时间戳:data.timestamp。//生成签名nonceStr的时间戳:data . non centr、//生成签名的随机字符串签名:data.signature、//签名jsApiList:【//要调用的JS接口列表& # 39;checkJsApi & # 39//判断当前客户端版本是否支持指定的JS接口& # 39;onMenuShareTimeline & # 39,//与朋友分享& # 39;onMenuShareAppMessage & # 39//分享到朋友圈】});}、error:function(xhr,status,error){//alert(status);//alert(xhr . responsetext);} })});

5.在要分享的页面中介绍微信分享的核心js和share.js。

6.在当前页面上

/*共享代码*/wx。ready(function()){//验证信息后将执行ready方法。所有接口调用都必须在从config接口获得结果后进行。config是客户端的异步操作,因此如果在加载页面时有必要调用相关接口,则必须在ready函数中调用它以确保正确执行。对于只有在用户触发时才被调用的接口,它们可以直接被调用,而无需放入就绪函数中。console . log(& # 39;微信验证成功& # 39;);//分享到朋友圈wx . onmenushare timeline({ title:detail _ title,//分享标题链接:link,//分享链接,链接域名或路径必须与当前页面对应的微信官方账号JS安全域名一致imgUrl:& # 39;http://develop . fangxinyuesao . com/resources/images/logo . png & # 39;,//分享图标成功:用户确认分享后执行的function(){//回调函数},取消:用户取消分享后执行的function(){//回调函数} });//与朋友分享wx . onmenushareappmessage({ title:detail _ title,//分享标题desc:& # 39;分享自妇女儿童头条& # 39;,//分享描述链接:link,//分享一个链接,该链接的域名或路径必须与当前页面对应的微信官方账号JS安全域名一致imgUrl:& # 39;http://develop . fangxinyuesao . com/resources/images/logo . png & # 39;,//共享图标类型:& # 39;',//共享类型、音乐、视频或链接;如果未填写,默认为链接数据URL:& # 39;'//如果类型是音乐或视频,则需要提供数据链接。默认为空success:function(){//用户确认共享后执行的回调函数}。cancel:function(){//用户取消共享后执行的回调函数} });});Wx。error(function(RES){//配置信息验证失败,将执行错误函数。如果验证因签名过期而失败,可以在配置的调试模式或返回的RES参数中查看具体的错误信息。对于SPA,可以在此处更新签名。console . log(& # 39;微信验证失败& # 39;);console . log(RES);});注意:当您想要设置网站白名单以在电脑端进行共享和调试时,我们建议使用微信WEB开发工具。

相关建议:

微信自定义菜单处理开发实例,微信自定义实例

以上是微信自定义分享功能的实现代码细节。更多资讯请关注主机参考其他相关文章!

这几篇文章你可能也喜欢:

本文由主机参考刊发,转载请注明:关于微信自定义分享功能的实现代码(手机微信分享代码) https://zhujicankao.com/104704.html

【腾讯云】领8888元采购礼包,抢爆款云服务器 每月 9元起,个人开发者加享折上折!
打赏
转载请注明原文链接:主机参考 » 关于微信自定义分享功能的实现代码(手机微信分享代码)
主机参考仅做资料收集,不对商家任何信息及交易做信用担保,购买前请注意风险,有交易纠纷请自行解决!请查阅:特别声明

评论 抢沙发

评论前必须登录!