微信开发小记

需求概述

作一个活动页面,要求:用户在页面录音或者输入文本,而后生成一个H5页面,送出个性化的元旦祝福(新年祝福)。css

环境

依赖

分解需求

  • 第一步:受权
  • 第二步:用户录音或者是输入文本
  • 第三步:获取用户昵称或者头像信息,而后生成用户独有页面

受权

微信官方文档 自己这个逻辑很简单,可是没想到在这里居然遇到了问题。这里须要注意的是:html

  • 受权回调页面域名,只能是线上地址,而且只能配置一个,因此须要须要一个线上的域名作跳转,这样保证开发的时候同样可使用受权,基本上填写一个appId和回调地址便可。测试环境可使用测试公众号,防止一些接口调用限制影响到线上
  • 受权后URL中会返回code信息,咱们须要用code信息换取网页受权token,在之后的接口中使用,按照文档参数传递便可。

注:这里遇到的问题是:invalid code,这个缘由可能由于code屡次使用致使的,原则这个code只有一次有效性,建议使用服务端302的形式,一进入须要受权的页面就先受权,防止使用前端JS形式致使code失效前端

输入或者录制用户想说的话

文本的就比较简单了,这里就不赘述纯功能逻辑了。录音的话咱们须要前端经过微信的JS-SDK调用相关接口实现,主要过程以下:node

  • 录音:wx.startRecord();
  • 录音后上传语音:首先须要监听中止录音或者是异常录音的状况,在这里作音频上传,能够经过wx.stopRecord()完成或者是一分钟没有中止的话wx.onVoiceRecordEnd({complete:function(){}});调用wx.uploadVoice()上传音频到微信服务器。这里须要注意的是:这里没有实体的音频文件是微信本身的一套规则,能够经过下载资源接口下载音频。
  • 本地用户预览本身录制的语音:wx.playVoice();
  • 可使用wx.translateVoice()转化为文本信息
  • 下载音频,须要以前受权的access_token和音频ID,相关文档,可使用node模板的接口下载,api_media下载接口。
  • 微信服务器下载音频文件.amr格式的,须要作格式转换。我这里用的是ffmpeg-node作的音频格式转换,转换后上传静态资源服务器。
  • 咱们须要把下载的音频托管到静态资源服务器上,好比说七牛。可使用七牛node模块

注:这里遇到的问题是:invalid media_id,起初觉得是微信的server_id传的有误,后来发现是由于前端SDK的公众号和服务端的公众号使用的不一致致使的git

获取用户信息

经过以前的access_token加上其余已知信息就能够获取到用户信息,这里也可使用wechat-api提供的api.getLatestToken获取最新的token信息。github

至此,咱们所须要的信息就都有了:用户头像和用户昵称,录音资源以及转换的文本信息,咱们就能够生成具备用户相关性的页面,让用户送出本身的祝福。你也能够来这里(建议使用微信访问)为你的亲朋和好友送去你的祝福。或者直接扫码:
送祝福web

小结

  • 分享一个wechat-api服务端服务
  • 一些常见的错误信息,以及响应的处理方式
  • 微信开发的一些小技巧

第一次开发整理一些思路和遇到的问题,若是有不当的地方,欢迎指正!api

相关文章
相关标签/搜索