`
liugang594
  • 浏览: 989711 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

微信分享实现

 
阅读更多

本文简单的介绍在微信里打开某个网站,希望在点击“分享到朋友圈”或“发送给朋友“时,自定义分享的内容, 即使用 JS-SDK 实现分享功能。

 

1. 前提

要想分享成功,需要申请一个公共号,获取特定的app_id 和 app_secret 。

 

2. 获取access_token

使用分配的 app_id 和 app_secret 去获取一个有效的 access_token ,路径为:

 

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=<app_id>&secret=<app_secret>

 

得到的返回值的格式为:

 

{"access_token":"<access_token>","expires_in":7200}

 

 

3. 获取jsapi的ticket

有了access_token以后,就可以使用该token去请求jsapi的ticket,路径为:

https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=<access_token>&type=jsapi

 

得到的返回值的格式为:

{"errcode":0,"errmsg":"ok","ticket":"<ticket>","expires_in":7200}

 

4.  生成签名

有了以上内容后,就可以生成签名了,生成签名的需要的参数有:

  • jsapi_ticket : 步骤 3 中获取的ticket
  • noncestr : 一个混淆字符串,值可以任意,在后续中还会被用到,所以需要记住
  • timestamp : 一个时间戳,就是从1970年1月1号零晨到当前的秒数,用 java 表示就是: System.currentTimeMillis()/1000
  • url : 微信当前打开页面的完整的url

把以上四个键值对,按键名的字母序,拼接起来,做一个sha1的加密,拼接的顺序为:

jsapi_ticket=<ticket>&noncestr=<any_str>&timestamp=<timestamp>&url=<current_page_url>

拼接完后做sha1加密就得到了签名,例如以下请求串: 

jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VH5zlC1TiV7zG5Rb8FkGY3GQrZ2aRpFoQX1CLQ7BaBVpS3sHlUyuJC5UnzQFf1oGpg&noncestr=test&timestamp=1429182394&url=http://m.ufenqi.com/items/2713/detail

加密后的值为: 85cf483b82edd0c9ada97635cf174446552201e9

 

注: 一个在线的sha1加密网站是: http://www.3464.com/tools/sha1/index.asp

 

注:java里可以使用 commons-codec 包里的 DigestUtils.sha1Hex() 方法得到加密值。

 

5. 实现分享代码

有了以上信息,就可以开始实现分享代码了:

<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js" ></script> <!--引用微信js-->
<script>
	// 微信配置
	wx.config({
	    appId: "<app_id>", 
	    timestamp: '<上面步骤中签名用的时间戳>', 
	    nonceStr: '<上面签名中用的混淆字符串>', 
	    signature: '<计算得到的sha1加密串>',
	    jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'] // 功能列表,我们要使用JS-SDK的什么功能
	});
	// 配置信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后
	//config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。
	//对于用户触发时才调用的接口,则可以直接调用,不需要放在ready 函数中。
	wx.ready(function () {
		//检查相应的接口api是否要用
	 	wx.checkJsApi({
	          jsApiList: [
	              'onMenuShareTimeline',
	              'onMenuShareAppMessage'
	          ]
	    });
	  	// 监听“分享给朋友”按钮,自定义分享内容及分享结果接口
	    wx.onMenuShareAppMessage({
	        title:'<分享标题>',
	    	link:'<要分享的链接>',
	        imgUrl:'<分享时显示的图片>',
	        desc:'<分享描述>',
	        type:'link', //指定分享类型
	    });
	  	// 监听“分享到朋友圈”按钮,自定义分享内容及分享结果接口
	    wx.onMenuShareTimeline({
	      	title:'<分享标题>',
	    	link:'<要分享的链接>',
	        imgUrl:'<分享时显示的图片>',
	        success:function(){		//可以定义一些分享执行后的通知事件
	        	alert("success");
	        }
	    });
	    //验证配置出错时的结果通知
	    wx.error(function (res) {
	        alert('wx.error: '+JSON.stringify(res));
	    });
	});
</script>

 

欢迎尝试

 

注:每次token的有效期是2个小时,所以需要定期的更新token;另外由于涉及到一些敏感和关键的信息,所以生成签名的逻辑一定要放在后台实现,然后给前端返把值推送回来。

分享到:
评论

相关推荐

    vue项目中实现的微信分享功能示例

    本文实例讲述了vue项目中实现的微信分享功能。分享给大家供大家参考,具体如下: /* 微信分享 */ Vue.prototype.wechatShare = (shareData) =&gt; { let resource = { title: '随我心愿!', desc: '体验优质服务', ...

    HTML静态页实现微信分享Demo

    HTML静态页实现微信分享Demo实现纯静态页jquery+ajax实现微信自定义标题、介绍、图片分享功能

    Android实现QQ和微信分享功能

    以上就是Android应用中实现QQ和微信分享功能的基本步骤和技术要点。在实际开发中,可能还需要根据业务需求进行定制化处理,比如自定义分享界面、监听分享状态等。在开发过程中,可以参考腾讯和微信的官方开发者文档...

    微信分享完整demo

    微信分享完整Demo是一款用于演示...通过深入研究这个微信分享完整Demo,开发者不仅可以学会如何在自己的应用中实现微信分享功能,还能掌握微信平台的相关安全措施和用户体验设计,对于提升应用的社交特性具有重要意义。

    Javascript 实现微信分享(QQ、朋友圈、分享给朋友)

    // 微信分享 var wx = require('wechat-sdk'); rewardsResultService.getWechatInfo().then(function(data) { var conf = data; wx.config({ debug: false, appId: 'wx34e783920b37ee91', timestamp

    手机浏览器唤起微信分享(JS)

    最近在做一个手机站,要求点击分享可以直接打开微信分享出去。而不是jiathis,share分享这种的点击出来二维码。在网上看了很多,都说APP能唤起微信,手机网页实现不了。也找了很多都不能直接唤起微信。 总结出来一个...

    微信分享后端接口

    本文将详细解析“微信分享后端接口”的实现,并探讨与之相关的技术知识点,包括微信分享、微信API的使用、IO流处理以及线程锁。 首先,微信分享是指通过微信平台将应用程序内的内容(如文章、图片、链接等)分享到...

    Cack!微信分享图标

    《微信分享图标的应用与实现详解》 在当前的数字化时代,社交媒体已经成为人们日常生活的一部分,而微信作为中国最受欢迎的社交平台之一,其分享功能更是被广泛使用。本文将围绕“Cack!微信分享图标”这一主题,...

    微信分享获得图片和文字描述,微信分享源码.zip

    本文将深入探讨“微信分享获得图片和文字描述”的技术实现,以及如何利用提供的“微信分享源码”进行学习和实践。 首先,微信提供了开放平台(Open Platform),它为开发者提供了丰富的API接口,包括分享功能。微信...

    微信分享流程图1

    微信分享流程图1是指在微信平台上实现分享功能的整个过程。下面将对该流程图进行详细的解读和分析: 首先,在微信分享流程图1中,首先需要判断签名是否可用。签名是微信提供的一个安全机制,用于保护分享的内容不被...

    基于springBoot2.0以上的微信分享接口后端实现

    基于springBoot2.0以上的微信分享接口后端实现,代码绝对可复用,稍加修改就可以为您所用

    js微信分享实现代码

    本文实例为大家分享了js微信分享实现代码,供大家参考,具体内容如下 微信分享代码,先引入: [removed][removed] 获取签名: mui.ajax('/apijson/wxsign', { type: 'get', data: { url: location.href, }, ...

    微信分享_android实现分享到微信.zip

    在Android平台上,微信分享是一项常见的功能,允许用户将各种类型的内容,如文本、图片、链接等,方便地分享到微信朋友圈或微信好友。本示例项目"微信分享Demo"将帮助开发者了解如何在Android应用中集成微信分享功能...

    Flutter 截图、QQ分享、微信分享、微博分享

    本文将深入探讨如何在Flutter应用中实现截图、QQ分享、微信分享以及微博分享的功能。 **截图功能** 在Flutter中,我们可以利用`image_picker`插件来实现屏幕截图。首先,用户通过调用`ImagePicker`的`...

    基于.Net的微信分享示例

    本文将详细解析基于.NET实现微信分享的示例,包括关键的类、接口以及前端调用的流程。 首先,我们来看标题中的"基于.Net的微信分享示例",这通常指的是使用C#语言和.NET Framework或.NET Core框架,通过微信开放...

    php微信分享带图标demo.zip

    【标题】"php微信分享带图标demo.zip"是一个关于如何在PHP环境中实现微信分享功能的示例项目,其中包含了自定义分享图标的功能。这个压缩包旨在帮助开发者理解并实现微信平台上的网页分享,使得用户在浏览网页时可以...

    UE4 微信分享SDK

    为了实现与社交平台的交互,如分享游戏成就、邀请好友等,开发者通常需要集成第三方SDK,例如微信分享SDK。本文将详细介绍如何在UE4中集成并使用微信分享SDK。 首先,你需要确保已经安装了UE4,并且对UE4的基本项目...

    微信分享-android

    本文将深入探讨如何实现微信分享功能,主要基于提供的"微信分享-android"示例代码。 首先,要实现微信分享,你需要在你的Android项目中集成微信SDK。这通常包括以下步骤: 1. **注册开发者账号**:访问微信开放...

    微信分享ASP版

    对于ASP(Active Server Pages)开发者来说,实现微信分享功能可以为他们的网站或应用引入更多的流量。下面将详细解释如何在ASP环境下构建微信分享功能,以及涉及到的关键知识点。 首先,我们来看`jssdk.asp`,这个...

Global site tag (gtag.js) - Google Analytics