H5网页实现微信分享功能

一,首先在公众号管理后台“公众号设置”的“功能设置”里填写JS接口安全域名,域名需要通过ICP备案,没有备案域名可以用SAE、BAE等平台。此外,自定义分享功能需要通过微信认证才能使用,没有认证的可以跟关系好的朋友借用权限,在他的JS接口安全域名设置这里填上你的域名和共享同一个开发者ID。

二,在需要调用JS接口的页面引入微信JSSDK的JS文件 。这个文件在需要分享的页面是必须要引用的,单独特别重申一下,其他方面请阅读官方文档。

/*

* 注意:

* 1. 所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

* 2. 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。

* 3. 常见问题及完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

*

* 开发中遇到问题详见文档“附录5-常见错误及解决办法”解决,如仍未能解决可通过以下渠道反馈:

* 邮箱地址:weixin-open@qq.com

* 邮件主题:【微信JS-SDK反馈】具体问题

* 邮件内容说明:用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。

*/

$(function() {

var url = location.href.split('#')[0];

//alert(url);

$.ajax({

url : "wap_sign_signature.htm",

data : {

"url" : url

},

dataType : "json",

timeout : 5000,

error : function(XMLHttpRequest, textStatus, errorThrown) {

if (textStatus == "timeout") { // 请求超时

} else {

}

},

success : function(data, textStatus) {

if (textStatus == "success") { // 请求成功

//alert(data.nonceStr);

//alert(data.timestamp);

//alert(data.signature);

wx.config({

debug : false,

appId : 'wxc4cf8e62667f92ea',

timestamp : data.timestamp,

nonceStr : data.nonceStr,

signature : data.signature,

jsApiList : [ 'onMenuShareAppMessage',

'onMenuShareTimeline' ]

});

}

}

});

});

/*

* 注意:

* 1. 所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

* 2. 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。

* 3. 完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

*

* 如有问题请通过以下渠道反馈:

* 邮箱地址:weixin-open@qq.com

* 邮件主题:【微信JS-SDK反馈】具体问题

* 邮件内容说明:用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。

*/

// 发送给朋友并返回结果

/* wx.checkJsApi({

jsApiList: ['onMenuShareAppMessage','onMenuShareTimeline'],

success: function(res) {

alert(reg);

}})

// 以键值对的形式返回,可用的api值true,不可用为false// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}});

}) */

wx.ready(function() {

/* wx.checkJsApi({

jsApiList: ['onMenuShareAppMessage'],

success:function(res){

alert(res.checkResult.chooseImage);

}

}) ; */

var title = "魔法妈咪学院入学啦!好妈咪快进来!";

var myurl = "http://diy-haier.highset.cn/index.jsp";

//分享给朋友

wx.onMenuShareAppMessage({

title : title, // 分享标题

desc : '海尔定制母婴家电,让你魔法加身,搞定养娃的大问题!', // 分享描述

link : myurl, // 分享链接

imgUrl : 'http://diy-haier.highset.cn/fx.jpg', // 分享图标

type : 'link', // 分享类型,music、video或link,不填默认为link

success : function() {

// 用户确认分享后执行的回调函数

},

cancel : function() {

// 用户取消分享后执行的回调函数

}

});

wx.onMenuShareTimeline({

title : title, // 分享标题

link : myurl, // 分享链接

imgUrl : 'http://diy-haier.highset.cn/fx.jpg', // 分享图标

success : function() {

// 用户确认分享后执行的回调函数

},

cancel : function() {

// 用户取消分享后执行的回调函数

}

});

});

wx.error(function(res) {

alert(res.errMsg);

});

三、需要一个提供appid的token认证的服务,

package cn.com.highset.controller;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import cn.com.highset.weixin.util.Constants;

import cn.com.highset.weixin.util.JS_Sign;

import cn.com.sunnet.wx.api.WeiXinUtil;

@Controller

public class WeixinController {

/**

* 获取微信签名

*

*/

@RequestMapping(value = "wap_sign_signature.htm", method = {

RequestMethod.GET, RequestMethod.POST })

@ResponseBody

public Map WapSignSignatureAction(String url,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

String accesstoken = (String) request.getSession().getAttribute(

"accesstoken_session");

if (accesstoken == null || "".equals(accesstoken)) {

WeiXinUtil util = new WeiXinUtil(Constants.APPID,

Constants.AppSecret);

accesstoken = util.getAccessToken();

request.getSession().setAttribute("accesstoken_session",

accesstoken);

request.getSession().setMaxInactiveInterval(7200);

}

Map js_data = JS_Sign.getJSSignMapResult(accesstoken,

url, request);

return js_data;

}

}

详细代码请参考该项目>>传送门

html网页实现分享功能,H5网页实现微信分享功能相关推荐

  1. h5在微信自定义分享php,h5页面自定义微信分享

    官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 开发准备:公众号绑定好需要开发的服务器域名. ...

  2. H5页面实现微信分享功能及踩坑历程

    看了官网,写的也挺简单的,也在网上搜索了一些demo,然后开始写: 我理解的误区: 我一直以为可以跟app分享一样,有个分享按钮点击触发分享:搜索了很多博客,得到结论,前几年好像是可以通过按钮引导分享 ...

  3. H5网页开发新手入门-H5网页如何适应不同手机屏幕分辨率?

    一.问题汇总 手机网页怎么制作? 怎么让网页适应不同手机屏幕? H5网页设计到底该设计多大尺寸? rem怎么自适应布局? H5一屛页面如何自适应屏幕? viewport该怎么写? width=devi ...

  4. h5 java实现微信分享_WebApp实现微信分享功能

    利用hbuilder的分享功能 hbuilder下载地址http://www.dcloud.io/hbuilderx.html 该功能前端使用vue进行的编写 h5去除js下的 export defa ...

  5. html分享标题描述图片尺寸,微信分享网页时自定义标题、描述和图片

    用微信打开一个网页,选择右上角的"发送给朋友"后,收到的消息是这样的: 而为了推广效果,我们更希望能自定义标题.描述和图片,效果如下图: 实现工具:GetwxLink 联系QQ:6 ...

  6. android 微信分享 源码,记录Android微信分享功能的吐槽与思考

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

  7. (拿走不谢)H5微信分享时,在苹果手机分享一直不行,公开微信分享完整工具,以及微信地图

    做微信分享时,在苹果手机分享一直不行,就尝试监听URL变化,发现不行.后来用刷新页面解决了. watch: { $route(to, from) { /** * route是异步改变的,所以,在cre ...

  8. html分享标题描述图片尺寸,微信分享H5自定义标题描述和图片

    前言 哎呀,为啥人家分享的H5页面这么绚丽,有头有尾有妹子,唯独自己的又老有丑又难啃,自己都看不下去,千万不要给领导看见.然而,最终还是领导发话了这个必须得改. 永远不要指望微信给的案例能让你迅速解决 ...

  9. java如何调用微信功能_Java编程调用微信分享功能示例

    本文实例讲述了java编程调用微信分享功能.分享给大家供大家参考,具体如下: 这篇文章介绍如何使用java开发微信分享功能,因为工作,已经开发完成,可使用. 如果想要自定义微信的分享功能,首先在自己的 ...

  10. android开发微信分享功能,Android编程实现微信分享信息的方法

    本文实例讲述了Android编程实现微信分享信息的方法.分享给大家供大家参考,具体如下: 随着微信越来越火,越来越多的应用要求有分享到微信的功能.虽然有很多平台都帮集成有分享功能,比如友盟.但是个人觉 ...

最新文章

  1. OpenJudge百炼习题解答(C++)--题4010:2011
  2. python编程课-python编程课---turtle
  3. MFC提示 未在此计算机上注册ActiveX控件“{648A5600-2C6E-101B-82B6-000000000014}“完美解决
  4. P4231 三步必杀 二次差分
  5. Paint X for Mac的用法
  6. gorm 密码字段隐藏_KeeWeb for mac(密码管理工具)
  7. PHP7不能用string类名,解决thinkphp php7 Cannot use ‘String’ as class name as it is reserved...
  8. 分布式压测系列之Jmeter4.0
  9. java rmi 多ip_在rmi连接中客户端指定一个ip地址,但程序执行中却转换成另一个地址...
  10. scrapy 的依赖库安装和出现def write(self, data, async=False):的解决方法
  11. before start of result set_Mac也能有庞大的游戏库,体验腾讯start云游戏,真的流畅...
  12. webservice系列1---基于web工程上写一个基本数据类型的webservice
  13. PyCharm 实用快捷键
  14. 数学表达式基础——2 集合、向量与矩阵
  15. 程序员租房福利! 最新 2018年上海公积金提取 租房提取
  16. oracle 密码解锁
  17. Python 全栈系列92 - memos的字段设计
  18. GB50204-2015 混凝土结构工程施工质量验收规范 免费下载
  19. 如何面试软件测试工程师
  20. Invalid bound statement (not found): com.kuang.dao.bookMapper.queryAllbook

热门文章

  1. 2020德勤面试开始了吗_刚刚去德勤面试,我只说了三个字就被录取了!
  2. 面经-毕马威南京-实习-算法-20191216
  3. 如何保存PPT的背景图片
  4. python儿童编程入门-如何让孩子轻松学习Python编程
  5. 表格里加横线一分为二_Word2010表格分割线一分为二斜线
  6. templates模板文件
  7. 串口程序设计——struct termios结构体
  8. 知其所以然技术论坛VC++资源下载
  9. php抽奖幸运,幸运大转盘-jQuery+PHP实现的抽奖程序
  10. java 计算2的64次幂_2的64次方