前两天刚整理了一个关于微信开发录音功能的开发步骤,网上这方面资料已经很多了,写下来就当作自己的笔记。

一.  首先需要在微信公众号中进行配置(其中Token为自定义项)

二. 在配置的域名文件夹下放置checkwei.php文件,用来验证配置是否成功。如下:

<?php
header('Content-type:text');
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
if (isset($_GET['echostr'])) {$wechatObj->valid();
}else{$wechatObj->responseMsg();
}class wechatCallbackapiTest
{public function valid(){$echoStr = $_GET["echostr"];if($this->checkSignature()){header('content-type:text');echo $echoStr;exit;}}private function checkSignature(){$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = $_GET["nonce"];$token = TOKEN;$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr, SORT_STRING);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr == $signature ){return true;}else{return false;}}
}

三.配置js接口安全域名,配置后公众号开发者可在该域名下调用微信开放的JS接口

按照提示进行第三部操作:

四.准备jssdk文件,现已经整理出一个分享的js_sdk包,所以前端同事在做的项目中直接引入这个封装好的包就行,jssdk包无需做任何修改!

(1)前端同事写的页面后缀多为.html或.shtml文件,需将页面的后缀改为.php ,因为在页面中需要嵌入PHP的代码,若是.html,.shtml后缀则无法解析。(该方法比较笨,因为我做的时候用的就是简单的一个页面所以就这样做了)

(2)引入一小段php文件,必须在文件开头引入,因为php规定require一个文件前面不能有任何输出。代码实例如下:

<?php
require_once "jssdk.php";
$jssdk=new JSSDK("wx****************a","86****************************67");
$signPackage =$jssdk->GetSignPackage();
?>

五.这次主要做的是一个关于微信录音,将录音资源从微信服务器下载到本地服务器的一个过程。不过先将获取用户信息这个步骤代码贴出来:

1.

 https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx***********************291&redirect_uri=http://www.demo.com/index.php/Ch/Cms/Uploadwxvoice/index&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect

2.//通过授权获取用户的信息

public function index(){$appid = "wx*********291"; $secret = "eb************************23eb2";$code = $_GET["code"]; //使用code换取oauth2的授权access_token$token_obj = json_decode(file_get_contents('https://api.weixin.qq.com/sns/oauth2/access_token?appid=’.$appid.’ &secret=’.$secret.’ &code='.$code.'&grant_type=authorization_code'));$access_token = $token_obj->access_token;$openid = $token_obj->openid;//使用授权Access Token和openid获取用户信息`$user_obj = json_decode(file_get_contents('https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN'));//将相关信息存储进session$_SESSION['openid'] = $user_obj->openid;$_SESSION['nickname'] = $user_obj->nickname;$_SESSION['headimgurl'] = $user_obj->headimgurl;$this->display();}

六.接下来可以进行调用接口开发。首先配置config项,注册需要调用的接口,

注意:需要先引入微信js文件

<script>//微信分享// var share_image = "";// var share_link = "";// var share_desc = '';// var share_title = '部落PK联盟';wx.config({debug: false,appId: '<?php echo $signPackage["appId"];?>',timestamp: <?php echo $signPackage["timestamp"];?>,nonceStr: '<?php echo $signPackage["nonceStr"];?>',signature: '<?php echo $signPackage["signature"];?>',jsApiList: [// 所有要调用的 API 都要加到这个列表中'onMenuShareAppMessage',//分享朋友'onMenuShareTimeline',///分享朋友圈'startRecord',//开始录音'stopRecord',//停止录音'onVoiceRecordEnd',//监听录音自动停止接口'playVoice',//播放录音'pauseVoice',//暂停云隐接口'stopVoice',//停止播放'onVoicePlayEnd',//'uploadVoice',//上传语音'downloadVoice'//下载语音]});wx.ready(function () {//朋友圈wx.onMenuShareTimeline({title:' ',//标题link:'',//链接imgUrl:'',//图片success:function(){},cancle:function(){}});//朋友wx.onMenuShareAppMessage({title:' ',desc:' ',//描述link:'',imgUrl:'',type:'',//分享类型music  不填默认是linkdataUrl:'',//如过类型是music  video  需要填写链接  默认为空success:function(){},cancle:function(){}});if(!localStorage.rainAllowRecord || localStorage.rainAllowRecord !== 'true'){wx.startRecord({success: function(){localStorage.rainAllowRecord = 'true';wx.stopRecord();},cancel: function () {alert('用户拒绝授权录音');}});
}// 4 音频接口// 4.2 开始录音document.querySelector('#startRecord').onclick = function () {START = new Date().getTime();recordTimer = setTimeout(function(){wx.startRecord({success: function(){localStorage.rainAllowRecord = 'true';alert('true');},cancel: function () {alert('用户拒绝授权录音');}});},300);};
var voice = {
localId: '',
serverId: ''
};// 4.3 停止录音document.querySelector('#stopRecord').onclick = function () {END = new Date().getTime();if((END - START) < 300){END = 0;START = 0;//小于300ms,不录音clearTimeout(recordTimer);}else{wx.stopRecord({success: function (res) {  voice.localId = res.localId;//uploadVoice(); },fail: function (res) {alert(JSON.stringify(res));}});}};// 4.4 监听录音自动停止wx.onVoiceRecordEnd({complete: function (res) {voice.localId = res.localId;alert('录音时间已超过一分钟');}});// 4.5 播放音频document.querySelector('#playVoice').onclick = function () {if (voice.localId == '') {alert('请先使用 startRecord 接口录制一段声音');return;}wx.playVoice({localId: voice.localId});};// 4.6 暂停播放音频document.querySelector('#pauseVoice').onclick = function () {wx.pauseVoice({localId: voice.localId});};// 4.7 停止播放音频document.querySelector('#stopVoice').onclick = function () {wx.stopVoice({localId: voice.localId});};// 4.8 监听录音播放停止wx.onVoicePlayEnd({complete: function (res) {alert('录音(' + res.localId + ')播放结束');}});// 4.8 上传语音document.querySelector('#uploadVoice').onclick = function () {if (voice.localId == '') {alert('请先使用 startRecord 接口录制一段声音');return;}wx.uploadVoice({localId: voice.localId, // 需要上传的音频的本地ID,由stopRecord接口获得isShowProgressTips: 1, // 默认为1,显示进度提示success: function (res) {var serverId = res.serverId; // 返回音频的服务器端IDalert(serverId);$.ajax({url: '/index.php/Ch/Cms/Uploadwxvoice/upload',//通过ajax请求后台进行语音资源向本地服务器下载的操作type: 'POST',data : { serverId : serverId },dataType: "html",success: function (data) {alert('OK');console.log(data);},error: function (xhr, errorType, error) {console.log(error);}});}});};// 4.9 下载语音document.querySelector('#downloadVoice').onclick = function () {if (voice.serverId == '') {alert('请先使用 uploadVoice 上传声音');return;}wx.downloadVoice({serverId: voice.serverId,success: function (res) {alert('下载语音成功,localId 为' + res.localId);voice.localId = res.localId;}});};});
wx.error(function (res) {alert(res.errMsg);
});
</script>

七.第六步中的 Uploadwxvoice()   方法代码如下:

//上传操作,将微信服务器上的文件下载到本地服务器public function upload(){$model = M('wxly');//media_id(serverId)为微信jssdk接口上传后返回的媒体id$media_id = $_POST['serverId'];$token_data = json_decode(file_get_contents("./luyin/access_token.json"));$access_token = $token_data->access_token;$path = "./Wxupload/";   //保存路径,相对当前文件的路径if(!is_dir($path)){mkdir($path);}//微 信上传下载媒体文件$url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token={$access_token}&media_id={$media_id}";$filename = $media_id.".amr";//下载下来的文件名字,前缀可自定义,在此步骤后可将下载的资源上传七牛云进行转码为 .MP3 再次下载操作,功能不需要可忽略$filepath = $path.$filename;ob_start();readfile($url);$img  = ob_get_contents();ob_end_clean();$size = strlen($img);$fp = fopen($path."/".$filename, 'a');fwrite($fp, $img);fclose($fp);$data['name'] = $name;$data['phone'] = $phone;$data['source'] = $biaoti;$data['attachment'] = $filename;$data['zattachment'] = $zfilename;$data['openid'] = $_SESSION['openid'];$data['nickname'] = $_SESSION['nickname'];$data['headimgurl'] = $_SESSION['headimgurl'];$data['status'] = 0;$data['writetime'] = time();// 保存当前数据对象if ($result = $model->add($data)) { //保存成功echo 'uploadok';} else {echo 'uploaderror';} //echo json_encode($arr);}

微信开发-关于分享朋友朋友圈以及录音功能相关推荐

  1. golang-vue实现微信小程序分享到朋友圈

    最近涉及到微信小程序分享到朋友圈,不知道微信为什么不直接接口分享,咱也不敢佛,咱也不敢问,只能百度问度娘,看官方文档,网上的一些分享五花八门,每一个重点的,所以整理了一下到底怎样生成二维码分享图片才是 ...

  2. android微信分享走小程序流程,教你怎么把微信小程序分享到朋友圈

    教你怎么把微信小程序分享到朋友圈 2020年07月13日 | 萬仟网移动技术 | 我要评论 7月8日收到邀请,可将小程序页面分享到朋友圈.适用于内容型页面的分享,不适用于有较多交互的页面分享.该功能为 ...

  3. 微信JS接口 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置

    微信JS接口 微信JS接口 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置 来源:http://www.cnblogs.com/txw1 ...

  4. 微信jsapi上传图片php,PHP+MySQL微信通过jsapi分享到朋友圈等平台,实现设置图片、链接...

    问题背景: 微信开发是目前程序开发领域一个比较火热的板块,基于公众号.微信支付等开发层出不穷,纷繁多彩,今天这里就基于微信开发的另外一个小版块,微信网页内分享到朋友圈等平台灵活设置链接和小图标(见下图 ...

  5. 解决 ios 微信小程序分享到朋友圈 禁用问题

    微信小程序分享到朋友圈 显示当前页面的转发按钮 显示当前页面的转发按钮 wx.showShareMenu 配置当前页面的转发按钮. onLoad(){wx.showShareMenu({withSha ...

  6. 微信发ascii_微信公众平台开发(107) 分享到朋友圈和发送给好友

    关键字:微信公众平台 JSSDK 发送给朋友 分享到朋友圈 onMenuShareTimeline onMenuShareAppMessage 作者:方倍工作室 原文:http://www.cnblo ...

  7. Swift - 发送消息(文本,图片,文件等)给微信好友或分享到朋友圈

    通过调用微信提供的API接口,我们可以很方便的在应用中发送消息给微信好友,或者分享到朋友圈.在微信开发平台(https://open.weixin.qq.com)里,提供了详细的说明文档和样例.但由于 ...

  8. 小程序分享到朋友圈功能_小程序开发日记 分享到朋友圈

    贵州 水司楼 图片来自 视频截图 最近微信小程序开始公测小程序分享到朋友圈的功能了.记得前两天刚开始内测时,小程序社区里就不断有人发帖问关于分享到朋友圈的各种问题.很显然大家对这个新特性都特别关心.那 ...

  9. 微信小程序分享到朋友圈,在朋友圈打开报错 error code -501023

    未登录模式 | 微信开放文档 未登录模式即无登录态的模式,在未登录模式中,不存在用户的登录态.未登录模式的场景有如: 单页模式:小程序/小游戏分享到朋友圈被打开时 Web 未登录模式:没有登录的 We ...

最新文章

  1. fedora21 下解决IDEA中文无法输入、显示问题
  2. Android开发--Json数据的解析
  3. 如何在 WebAPI 中启用 CORS
  4. ASP.NET Core真实管道详解[2]:Server是如何完成针对请求的监听、接收与响应的【上】
  5. python-函数的多值传参
  6. 千里达v1000时速_重新定义性价比 千里达V1000碳架山地车 评测
  7. oh-my-zsh主题添加命令显示执行时间和当前时间
  8. 软件测试 - 功能测试(测试理论+用例设计)
  9. 模拟wechat红包 版本2.0
  10. 【浏览器兼容性】如何隐藏微软的ie和edge浏览器密码输入框的小眼睛
  11. oracle中笛卡尔积怎么用,Oracle的表连接方法(四)笛卡尔积
  12. C语言_关于文件内容删除的两个方法总结
  13. java hbase 批量查询数据_java Hbase 批量读取
  14. 74LS148+74LS47简易病房呼叫系统电路图
  15. 《Web性能权威指南》笔记
  16. 基于卷积神经网络的手写数字识别(附数据集+完整代码+操作说明)
  17. 如何让Flex AIR压缩解压缩库airxzip也支持中文文件名
  18. 华为matebook电脑屏幕亮度动态变化的解决办法
  19. 怎么恢复丢失安卓手机数据文件呢
  20. 二进制和十进制相互转换的简便方法

热门文章

  1. 科技艺术:新专业如何面向未来
  2. 读《虚无的十字架》有感
  3. Delphi图像处理 -- 图像翻转(镜像)
  4. Windows系统使用VScode开发golang程序,远程连接Ubuntu系统编辑代码并编译运行
  5. sql limit不接具体数字_MySQL面试题-SQL优化
  6. 计算机硬件外围设备介绍,计算机硬件及其外围设备.ppt
  7. list-style-type的属性值
  8. 页面间的传值(小结)
  9. TOEFL听力——笔记方法
  10. 一个艰苦奋斗的程序员的开店经历,写给想做网店兼职的朋友