php微信公众号js-sdk开发应用


Posted in PHP onNovember 28, 2016

测试js的接口功能,我用的是BAE服务器不是SAE服务器。SAE服务器不能写入文件,测试会出问题。
什么叫js-sdk,我先演示js-sdk接口的具体作用。

我在微信随便打开一片推送文章如下图:

php微信公众号js-sdk开发应用 

点开第一篇文章

php微信公众号js-sdk开发应用 

上面就是我们的连接文章,如果我们把这篇文章发送给朋友,显示效果如下图:

php微信公众号js-sdk开发应用

分享到朋友圈我们再来看看效果:

php微信公众号js-sdk开发应用

为什么同样是文章连接,在公众号、发送给朋友、发送到朋友圈显示的界面效果不一样。公众号的显示效果是因为微信公众帐号在推送的时候调用了微信的消息接口,而后两者是因为页面调用js-sdk相关的sdk接口。
发送给朋友调用了js接口的获取“分享给朋友”按钮点击状态及自定义分享内容接口。
发送给朋友圈调用了js接口的获取“分享到朋友圈”按钮点击状态及自定义分享内容接口。

下面我们来实现调用js-sdk接口的步骤:

第一步:微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

如下图:

php微信公众号js-sdk开发应用 

只有置于该域名下的页面才能调用js接口。

第二步:http://demo.open.weixin.qq.com/jssdk/sample.zip连接这个地址下载 ,打开里面的php文件夹,你发现4个php文件

php微信公众号js-sdk开发应用 

前面3 个php文件是配置文件,不要动它,sample.php是我们在微信中打开的连接页面,在这个页面中我们来编写我们的页面代码。这个文件我用来测试,里面的代码跟原版已经不同。

<?php
// echo "nihao";
require_once "jssdk.php";
$jssdk = new JSSDK("wxaf471be5d2bc9521", "93f5c3817074d43e7a7ab3f403cc72dd");//JSSDK中的参数是appid和appsecret。
$signPackage = $jssdk->GetSignPackage();//获取配置参数。
?>
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
</head>
<body>
 <div>我靠</div>
 <div>猪八戒</div>
 <button style="color: red" id="btn">你好</button>
 <button id="btn1">唐生</button>
</body>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>//这个是js-sdk文件,一定要引入。
<script>

 var button = document.getElementsByTagName("button");
 var btn = document.getElementById("btn");
 var div = document.getElementsByTagName("div")[0];
 var btn1 = document.getElementById("btn1");
 //wx表示一个js-sdk构建的一个对象。config()是它的一个方法,这个接口用来验证配置。
 wx.config({
 debug: true,//true表示每调用一个接口信息都会在页面alert一段字符串。方便测试过程中国是否能正确调用接口。
 appId: '<?php echo $signPackage["appId"];?>',
 timestamp: <?php echo $signPackage["timestamp"];?>,
 nonceStr: '<?php echo $signPackage["nonceStr"];?>',
 signature: '<?php echo $signPackage["signature"];?>',
 //上面的4个参数,如果你像深入了解其来源就去查看jssdk.php代码。测试过程不需要对上面的代码做任何操作。
 jsApiList: [
  // 所有要调用的 API 都要加到这个列表中
  'onMenuShareAppMessage',//获取“分享给朋友”按钮点击状态及自定义分享内容接口。
  'chooseImage',//获取手机相片接口
  'openLocation'//获取微信地图接口
 ]
 });

//所有的js调用接口都要放到下面的ready()中。
 wx.ready(function () {
 // 在这里调用 API
 //获取“分享给朋友”按钮点击状态,点击后发送给朋友微信,微信上的推送显示内容就是下面的数据
  wx.onMenuShareAppMessage({
   title: '大圣', // 分享标题
   desc: '我要坚持', // 分享描述
   link: 'http://www.baidu.com', // 分享链接
   imgUrl: 'http://discuz.comli.com/weixin/weather/icon/cartoon.jpg', // 分享图标
   type: 'link', // 分享类型,music、video或link,不填默认为link
   dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
   success: function () { 
    // 用户确认分享后执行的回调函数
    alert("success");
   },
   cancel: function () { 
    // 用户取消分享后执行的回调函数
    alert("error");
   }
  });
 //拍照或从手机相册选择。点击页面上的按钮就可以调用手机里的相册。
  btn.onclick = function(){
  wx.chooseImage({
   count: 1, // 默认9
   sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
   sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
   success: function (res) {
    var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
   }
  })
  };
 //微信内置地图接口。点击该按钮就可转到显示当前位置的地图页面
  btn1.onclick = function() {

  wx.openLocation({
 latitude: 0, // 纬度,浮点数,范围为90 ~ -90
 longitude: 0, // 经度,浮点数,范围为180 ~ -180。
 name: '', // 位置名
 address: '', // 地址详情说明
 scale: 1, // 地图缩放级别,整形值,范围从1~28。默认为最大
 infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
});
  }

 });
// wx.checkJsApi({
//  jsApiList: ['onMenuShareAppMessage'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
//  success: function(res) {
//   // 以键值对的形式返回,可用的api值true,不可用为false
//   // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
//   alert("success");
//  }
// });

// btn.onclick = function() {
//  div.innerText = "齐天大圣";
//  wx.onMenuShareAppMessage({
//  title: '大圣', // 分享标题
//  desc: '我要坚持', // 分享描述
//  link: 'http://www.baidu.com', // 分享链接
//  imgUrl: 'http://discuz.comli.com/weixin/weather/icon/cartoon.jpg', // 分享图标
//  type: 'link', // 分享类型,music、video或link,不填默认为link
//  dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
//  success: function () { 
//   // 用户确认分享后执行的回调函数
//   alert("success");
//  },
//  cancel: function () { 
//   // 用户取消分享后执行的回调函数
//   alert("error");
//  }
// });
 // }
</script>
</html>

测试js的接口功能,我用的是BAE服务器不是SAE服务器。SAE服务器不能写入文件,测试会出问题。
更多功能及详细信息,请大家访问http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php getimagesize 上传图片的长度和宽度检测代码
May 15 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
PHP中PDO的错误处理
Sep 04 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
php获取网页中图片、DIV内容的简单方法
Jun 19 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
php读取文件内容的方法汇总
Jan 24 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
Smarty模板语法详解
Jul 20 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 PHP
php下的原生ajax请求用法实例分析
Feb 28 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
Nov 28 #PHP
php微信公众平台交互与接口详解
Nov 28 #PHP
php微信公众号开发模式详解
Nov 28 #PHP
jQuery+php简单实现全选删除的方法
Nov 28 #PHP
PHP中的use关键字及文件的加载详解
Nov 28 #PHP
php连接微软MSSQL(sql server)完全攻略
Nov 27 #PHP
php源码之将图片转化为data/base64数据流实例详解
Nov 27 #PHP
You might like
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
PHP经典实用正则表达式小结
2017/05/04 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
django 中使用DateTime常用的时间查询方式
2019/12/03 Python
Python Django搭建网站流程图解
2020/06/13 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
Python模块常用四种安装方式
2020/10/20 Python
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
店长助理岗位职责
2013/12/13 职场文书
学习十八大精神心得体会
2013/12/31 职场文书
借名购房协议书范本
2014/10/06 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书