PHP 微信分享
share.php页面
<?php
//公众号设置一下 JS接口安全域名,不要http,www的一级域名,比如http://www.baidu.com域名下的某个路径要分享,js安全域名中只需填上 baidu.com 即可 //关于分享地址,有两种情况
//第一种由后端固定分享地址,但是因为微信分享出去后的地址结尾带有from和isappinstalled参数。分享后再分享就会失效,所以前端判断获取这两参数,给后端动态添加到分享地址后面
$urlend = '';
if(!empty($_POST['from']) && ($_POST['from'] == 'timeline' || $_POST['from'] == 'singlemessage')){
$urlend = "?from=".$_POST['from'] . "&isappinstalled=".$_POST['isappinstalled'];
}
$shareurl = 'http://www.baidu.com/test/index.html'.$urlend;
//第二种,由前端 window.location.href 获取当前页,传给后端
if(!empty($_POST['shareurl'])){
$shareurl = $_POST['shareurl'];
} $data['ticket'] = 'bxLdikRXVbTPdHSM05e5u7AnbMMI4rNIxqVt3BVCv-JyYcjsM0DdvwuHhd69qZ3-EzyQnuaEawwfTUdJMumb6A';//假设已获取到ticket,具体获取方法格外查询
$data['timestamp'] = time();//当前时间戳
$data['noncestr'] = 'suijiwenzi';//自定义随机字符串
$data['url'] = $shareurl;//分享地址,url路径后面详细到文件扩展名时结尾不需要加/,否则详细到文件夹名则需要加/
//包括一些特殊路径比如 'http://www.baidu.com/test/index.php?s=home/index/test2' 其中有文件扩展名,则结尾也不需要加/
//说白了就是必须和当前浏览器路径完全一致
$data['appId'] = 'wxb71ed5a23a86e594';
$data['imgUrl'] = 'http://www.baidu.com/test/shareImg.jpg';
//生成签名
$string1 = "jsapi_ticket=".$data['ticket']."&noncestr=".$data['noncestr']."×tamp=".$data['timestamp']."&url=".$data['url'];
$data['signature'] = sha1($string1);
// 显示获得的数据
echo json_encode($data);
exit;
?>
test_share.html页面
<!DOCTYPE html>
<html>
<head>
<title>测试html</title>
</head>
<body>
<!-- 以下jquery文件应换成实际js文件路径,否则报错 -->
<!-- <script type="text/javascript" src="js/jquery.min.js"></script> -->
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
//var from = GetQueryStringS("from");
//var isappinstalled = GetQueryStringS("isappinstalled");
var shareurl = window.location.href; $.post('share.php', {
//如果前端能直接获取当前页地址并传给后端,则 from 与 isappinstalled 可以不传
//'from' : from,
//'isappinstalled' : isappinstalled,
'shareurl' : shareurl
}, function(data) {
console.log(data);
var appId = data['appId'];
var timestamp = data['timestamp'];
var noncestr = data['noncestr'];
var signature = data['signature']; var url = data['url'];
var imgUrl = 'http://www.fotile.com/Video/html/img/shareImg1.jpg'; wx.config({
debug : true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId : appId, // 必填,公众号的唯一标识
timestamp : timestamp, // 必填,生成签名的时间戳
nonceStr : noncestr, // 必填,生成签名的随机串
signature : signature,// 必填,签名,见附录1
jsApiList : [ 'onMenuShareTimeline', 'onMenuShareAppMessage' ]
// 必填,需要使用的JS接口列表,所有JS接口列表见附录2
}); wx.ready(function() {
wx.onMenuShareTimeline({
title : '你敢信么?家里烟龄最长的竟是妈妈!', // 分享标题
desc : '最怕你被烟伤害的人,却是被烟伤害最久的人', // 分享描述
link : url, // 分享链接
imgUrl : imgUrl, // 分享图标
success : function() {
//alert('分享成功');
},
cancel : function() {
// 用户取消分享后执行的回调函数
}
});
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
wx.onMenuShareAppMessage({
title : '你敢信么?家里烟龄最长的竟是妈妈!', // 分享标题
desc : '最怕你被烟伤害的人,却是被烟伤害最久的人', // 分享描述
link : url, // 分享链接
imgUrl : imgUrl, // 分享图标
type : 'link', // 分享类型,music、video或link,不填默认为link
dataUrl : '', // 如果type是music或video,则要提供数据链接,默认为空
success : function() {
// 用户确认分享后执行的回调函数
},
cancel : function() {
// 用户取消分享后执行的回调函数
}
});
});
}, "json") function GetQueryStringS(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null)
return unescape(r[2]);
return null;
}
</script>
</body>
</html>
PHP 微信分享的更多相关文章
- H5页面微信分享和手Q分享设置
RT: 一. 手Q分享: 如下代码所示:设置好 description,name,image,即可,唯一注意的是image最好是200*200,要不然过小不美观,过大加载太慢 <head> ...
- 微信jsApI及微信分享对应在手机浏览器的调用总结。
摘录自别人的博客: 第一篇:微信内置浏览器的JsAPI(WeixinJSBridge续) 之前有写过几篇关于微信内置浏览器(WebView)中特有的Javascript API(Javascript ...
- android微信分享不出去?四步搞定!
现在做的项目中集成了友盟分享,产品要求集成微信.朋友圈.QQ.QQ空间.短信这几个分享平台.按照友盟的文档集成一切都很顺利,集成成功以后测试QQ.QQ空间.短信都没有问题,唯独微信和朋友圈一直分享不出 ...
- url带#号,微信授权,微信分享那些坑
微信授权的方法是,在项目里面配置拦截器(此处可以参考各个框架的拦截器)没有拦截器也可以,反正意思就是跳转到项目里的时候判断微信环境 如果是微信环境, 判断微信环境的方法是 var ua = windo ...
- Android微信分享图片大于32k进行压缩
微信分享视频的时候,需要传一个图片数组,大小不能大于32k. 解决方案:使用Bitmap自带的compress方法解决了这个问题. 源码如下: <span style="font-si ...
- ionic 微信分享值各种坑
去前段时间公司的app需要做微信分享,然后网上找的教程,在做的时候发现网上的教程各种坑,现在将做得过程分享出来 在做功能之前你需要做几步预备工作, 1.安装jdk,jre,并加入全局变量[这个网上还是 ...
- 微信分享JS函数(原创)[已失效]
//微信内置浏览器分享事件 //来自:http://www.cnblogs.com/cielwater //分享朋友圈事件 //UpdateWeixinJSBridge(CircleModel[Jso ...
- ionic单页面应用中微信分享的问题总结
首先说一下 ionic 是单页面应用,也就是说整个项目就有一个index.html, 那么问题就就来了, 如果我们不同的页面要分享给大家的是不同的链接和图片,应该怎么去做呢? 这就是我们今天要总结的东 ...
- android微信分享要注意的地方
最近在做android端分享的功能,在微信开放平台查看了下官网上的开发文档,一步一步的按文档上的步骤来: 1.申请你的AppID 2.下载开发工具包 3.搭建开发环境,引入libammsdk.jar文 ...
随机推荐
- 解决FTP的URL访问不能有中文名称的问题,报java.lang.IllegalArgumentException
最近一个项目要用到FTP做上传下载,我访问ftp的url中有中文名称,结果每次都报如下错: 1 Exception in thread "main" java.lang.Illeg ...
- 正则表达式中的exec和match方法的区别
正则表达式中的exec和match方法的区别 字符串的正则方法有:match().replace().search().split() 正则对象的方法有:exec().test() 1.match m ...
- springmvc配置多视图 - tiles, velocity, freeMarker, jsp
转自: http://www.cnblogs.com/shanheyongmu/p/5684595.html <!-- Velocity --> <bean id="vel ...
- 通过Request.Form获取同name的checkbox所有值
转自:http://www.cnblogs.com/Fred_Xu/archive/2013/01/16/how-to-get-the-checkbox-value-from-a-dynamicall ...
- 一个简单的js实现倒计时函数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- cookie、session与token
一.详述概念 1.Cookie机制 cookie机制是采用在客户端保持状态的方案(cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力).cookie的使用是由浏览器按照一定的原则在后台自 ...
- Git 常见的一些小命令
Git 常见的一些命令 关于一些参数比较多,比较复杂的都有单独进行介绍 1. git cherry-pick 挑拣命令,当我们不想合并分支,或者git pull 更新仓库,而是 ...
- SublimeText教程
1安装插件 1.請先確認已經安裝好Package Control 未安裝的話請看:安裝第一個Sublime Text套件 2.按下CTRL + SHIFT + P並且輸入Package Control ...
- Java提高篇——设计模式
设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软 ...
- Python之路-python(堡垒机)
运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的 ...