微信分享等api笔记
来源:互联网 发布:淘宝大码孕妇装排行 编辑:程序博客网 时间:2024/06/03 21:27
微信分享首先需要的条件
首先,公众号需要是认证过的,服务号。
开发前需要在微信公众号,填写安全域名。
当然,你需要知道你的appid和appsecret。
——————————————1 根据自己的业务逻辑,定义一个微信jssdk类,获得分享需要用到的数据—————————————————————
/**** @author 坏人小明** @jssdk 集成类***/class JSSDK { public function outWeixin() { define("APPID", "你的<span style="font-family: Arial, Helvetica, sans-serif;">APPID</span>"); define("APPSECRET", "你的<span style="font-family: Arial, Helvetica, sans-serif;">APPSECRET</span>"); $jsapi_ticket = $this->getJsApiTicket(); $nonceStr = '固定或自己定义的随机生成字段'; $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";//获取当前不带#和hash值的url $timestamp = NOW_TIME;//当前时间戳 $string1 = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$nonceStr."×tamp=".$timestamp."&url=".$url;//按微信规定连接的字串
$signature = sha1($string1);//加密 $srcjs = '<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>'; //加载js $wxJsConfig = "wx.config({//配置验证参数 debug:false, appId:'".APPID."', timestamp:".$timestamp.", nonceStr:'".$nonceStr."', signature:'".$signature."', jsApiList: [ //与步骤3中api列表对应 'onMenuShareTimeline', 'onMenuShareAppMessage' ] })"; return array('srcjs'=>$srcjs,'wxJsConfig'=>$wxJsConfig); } private function getJsApiTicket() { $data = D('存放的表名')->where()->find(); if ($data['ticket_time'] < time()) { $access_token = $this->getAccessToken(); $jsapi_ticket = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi" ; $res = file_get_contents($jsapi_ticket); //获取文件内容或获取网络请求的内容 //echo $res; $result = json_decode($res, true); //接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 $jsapi_ticket = $result['ticket']; $wxdata['jsapi_ticket'] = $result['ticket']; $wxdata['ticket_time'] = time()+7000; //存储access_token $data = D('<span style="font-family: Arial, Helvetica, sans-serif;">存放的表名</span><span style="font-family: Arial, Helvetica, sans-serif;">')->where()->save($wxdata);</span> $jsapi_ticket = $wxdata['jsapi_ticket']; // var_dump($jsapi_ticket);die(); } else { $jsapi_ticket = $data['jsapi_ticket']; } return $jsapi_ticket; } private function getAccessToken() { $data = D('<span style="font-family: Arial, Helvetica, sans-serif;">存放的表名</span><span style="font-family: Arial, Helvetica, sans-serif;">')->where(array('id'=>1))->find();</span> if ($data['expire_time'] < time()) { // var_dump(time());die(); $token_access_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . APPID . "&secret=" . APPSECRET; $res = file_get_contents($token_access_url); //获取文件内容或获取网络请求的内容 $result = json_decode($res, true); //接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 $wxdata['access_token'] = $result['access_token']; $wxdata['expire_time'] = time()+7000; $data = D('<span style="font-family: Arial, Helvetica, sans-serif;">存放的表名</span><span style="font-family: Arial, Helvetica, sans-serif;">')->where(array('id'=>1))->save($wxdata);</span> $access_token = $wxdata['access_token']; } else { $access_token = $data['access_token']; } return $access_token; }}
——————————————2 在需要用到的方法里引入jssdk,并传值到页面,根据各个框架不同方法不同—————————————————————
require_once 'jssdk的路径'; $jssdk = new JSSDK(); $data = $jssdk->outWeixin();
——————————————3 在需要分享的页面,加载方法传过来的值,写出调用的api—————————————————————————————
<span></span>wx.ready(function () { wx.onMenuShareTimeline({ title: '分享标题', // 分享标题 link: '2222', // 分享链接 imgUrl: 'weixinshare.png', // 分享图标 success: function () { // 用户确认分享后执行的回调函数 // alert('1'); }, cancel: function () { // 用户取消分享后执行的回调函数 // alert('2'); }});wx.onMenuShareAppMessage({ title: '分享标题', // 分享标题 desc: '分享描述', // 分享描述 link: 'www.baidi.com', // 分享链接 imgUrl: '122', // 分享图标 type: '', // 分享类型,music、video或link,不填默认为link dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 }}); });
总结:
做的过程参考微信开发者文档即可。不多叙述。
遇到如下几个问题:
1 。url的获取,获取当前不带#和hash值的url 容易出错
2 。 签名错误时,先检查各个拼接字段,然后检查string连接是否写错,是否sha1加密。再去查access_token 和jsapi_ticket
3 。需要注意的是,access_token 和jsapi_ticket 这两个值,都是7200有效期,每天的请求上线是2000次,所以需要在服务器进行缓存,可以写文件,可以存入缓存,可以写表等等 。如果超过上限,微信号将被取消使用分享的功能。
3 。 步骤3中调用的api需要写在
wx.ready(function () {
} 中
4 需要在公众号内 绑定微信安全域名,只有域名列表内的,才能使用api。
5 在缓存的时候access_token 和jsapi_ticket 的长度需要注意
0 0
- 微信分享等api笔记
- 微信分享等设置 -- 缩略图等
- 微信禁用右上角的分享按钮,WeixinJSBridge API以及隐藏分享的子按钮等菜单项
- 微信禁用右上角的分享按钮,WeixinJSBridge API以及隐藏分享的子按钮等菜单项
- 微信、微博、facebook等分享
- mod微信,qq等分享
- Android 微信分享Api使用详解
- 微信分享api使用函数
- 微信H5网页分享API 调用
- 微信开发--微信分享等接口配置
- android ShareSDK分享,QQ,微信,新浪等分享
- 微信公众平台Js API实现微信分享
- 微信登录,分享,支付,等的白屏闪屏等问题
- Android微信分享学习笔记
- 空间 ,微信,微博等分享的代码
- 分享到QQ,微信,微博等
- 微信分享自定义(包含图片、标题等)
- javascript实现修改微信分享的标题内容等
- Android Studio系列教程四--Gradle基础
- 【打CF,学算法——四星级】CodeForces 86D Powerful array (莫队算法)
- 【SSH】利用applicationContext.xml文件结合java代码生成项目所需的数据库
- 【二分查找】
- 通过JDBC进行简单的增删改查(以MySQL为例)
- 微信分享等api笔记
- SPI总线协议及SPI时序图详解
- Hadoop简单介绍
- 提高项目30.7-去除句子中所有多余的空格,返回去除了空格的字符串
- JAVA正则表达式语法大全
- Redis的三种启动方式
- maven 使用findbugs 插件
- [BZOJ 3691] 游行
- nodejs进行自动化测试