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文 ...
随机推荐
- webbrowser 内核切换
修改注册表位置: [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER ...
- css中很有用的属性
有些css属性很实用,但不常用也就被忘记. 这里纪录了自己在项目中用过的一些. html,body{ -webkit-tap-highlight-color:transparent; } 这个的用途是 ...
- 使用OpenSSL为支付宝生成RSA私钥
通过openssl工具生成RSA的公钥和私钥(opnssl工具可在互联网中下载到,也可以点此下载无线接口包,里面包含此工具)打开openssl文件夹下的bin文件夹,执行openssl.exe文件: ...
- nvm诡异的报错
安装:curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash wget -qO- htt ...
- android开发中的问题总结(一)
1.设置sdk路径 window->preferences->android->SDK location 中进行修改,如果出现红叉,就说明不正确,选择的路径必须包含tools的那个目 ...
- python基础:交互式解释器
什么是"交互式python解释器"? 当你看到">>>"符号,就意味着你进入交互式python解释器,又称作"提示符". ...
- Design and Analysis of Algorithms_Decrease-and-Conquer
I collect and make up this pseudocode from the book: <<Introduction to the Design and Analysis ...
- WebForm——IIS服务器、开发方式和简单基础
一.B/S和C/S 1.C/S C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据 ...
- C++ Sqlite3
/* 回调函数的格式如下: int sqlite_callback( void* pv, //由 sqlite3_exec() 的第四个参数传递而来 int argc, //表的列数 char** a ...
- 详解clientHeight、offsetHeight、scrollHeight
关于clientHeight.offsetHeight.scrollHeight window.screen.availWidth 返回当前屏幕宽度(空白空间) window.screen.av ...