小程序开发过程中遇到的问题

  1. 微信小程序请求全部为https

不过在开发环境中,在电脑上的微信web开具中的,详情底下的不进行https校验打上勾即可发送http请求,也使用小程序request的api进行发送。在此情况下如果在手机预览手机没有开启调试的模式那么http请求是不会生效的,开启调试模式后就和电脑的一样显示原本的结果

  1. 业务域名的相关问题

1.用户填写多个业务域名,需要确保所有的业务域名根目录下存在校验文件,否则会校验失败。

2.校验文件内容错误。校验文件内容一般是非HTML数据,如果下载下来的校验文件内容为HTML数据,一般为登录态过期。请重新登录小程序下载校验文件。

3.https证书过期。请确保https证书处于有效期内。

4.使用curl 测试链接,确保curl能够正常访问链接。如确保上述步骤没问题,麻烦提供小程序appid和操作时间。

3. 微信小程序请求不能使用session的原因及解决办法

微信对wx.request这个API做了修改,小程序发起的请求并不是直接请求我们的后台服务器,而是先通过微信的服务器再发送到我们的后台服务器,既然请求都是要通过微信的服务器发送到我们的服务器,那么我们的服务器也就无从识别请求的发起者了。因此,session在微信小程序的后台开发中是无法使用的。小程序登录后, 服务器端生成ticket返回给客户端,客户端把ticket存在本地的storage,每次提交的时候,访问头部加入” C-User-Ticket”与服务端进行交互。

  1. 小程序授权问题

如果拒绝授权,短时间内微信不会重新调起授权框让用户重新授权。

处理方案:1.判断用户授权操作,如果拒绝,弹出确认框提示用户“将无法正常使用小程序,建议删除小程序重新进入或者手动授权,是否手动授权?”,用户点击确定,跳到设置界面,手动授权,用户点击取消,跳到取消授权页面(需开发)

  1. WSS环境配置错误

用Nginx反向代理实现WSS,创建连接时报错:

Error during WebSocket handshake: ‘Connection’ header value must contain ‘Upgrade’

1、查看Nginx版本,此属性从1.3.13 开始支持此特性,若是低于该版本,则直接升级到最新版本。

2、Nginx配置文件中加入:

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

 

  1. WSS时长配置问题:

每过1分钟左右,websocket就会自动关闭

原因:使用了nginx服务,nginx配置:proxy_read_timeout(Default: 60s;),如果一直没有数据传输,连接会在过了这个时间之后自动关闭。

解决方案:

1、修改proxy_read_timeout配置,出于业务要求,修改proxy_read_timeout为1800S;

2、可以通过心跳保持连接nginx配置如下:

http {

    map $http_upgrade $connection_upgrade {

        default upgrade;

        ''      close;

    }

    server {

        ...

 

        location /chat/ {

            proxy_pass http://backend;

            proxy_http_version 1.1;

            proxy_set_header Upgrade $http_upgrade;

            proxy_set_header Connection $connection_upgrade;

        }

    }

 

  1. 对开发者在进行消息加解密过程中可能会遇到的常见错误问题,整理原因如下:

1.xml格式不对:如写成了 (s小写了且p和>中间有空格);

2.公众平台网站提供了修改EncodingAESKey的功能,公众账号需要保存当前的和上一次的EncodingAESKey,若当前的EncodingAESKey解密失败,则尝试用上一次的EncodingAESKey解密。回包时,用哪个Key解密成功,则用此Key加密对应的回包。

3.java要求jdk 1.6以上;

4.异常java.security.InvalidKeyException:illegal Key Size的解决方案:在官方网站下载JCE无限制权限策略文件(JDK7的下载地址

下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt,如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件;如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件

  1. 支付签名校验失败(签名错误)

假如出现这个错误,可以仔细参考微信支付系列教程:http://www.wxapp-union.com/portal.php?mod=list&catid=19

微信支付签名校验地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1

  1. 注意事项:
  2. (1)如选择XML校验,XML需包含sign字段
  3. (2)注意参数名需区分大小写,必须与文档的参数名大小写一致

 

  1.  用户头像尺寸说明:

“http://thirdwx.qlogo.cn/mmopen/PiajxSqBRaEJNS4eRt3C2t3onHeguzgcI5so15sWOkfYkMAo3xk3rQUvibze0MmzRJqib6lCjokrmc063ibMFSZPiaQ/132”

用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。

  1.  解决微信授权回调页面域名只能设置一个的问题

当下的解决方案是引入一个新的非常简单的应用来作为微信授权的代理服务,可以这么做:

1. 把公众号的网页授权接口域名设置成另外一个子域名,如proxy.your.com;

2. 然后把php_weixin_proxy里面的index.php部署到proxy.your.com

php_weixin_proxy下的index.php是一个很简单的php文件,你可以直接查看源码了解它的实现方式。因为当前项目的环境,我采用php来完成这个代理服务实现,实际上,你完全可以用任意平台语言来完成类似的功能。

当其它业务需要发起微信授权时,将授权请求先发到proxy.your.com,然后proxy.your.com会把这个请求转发到微信; 
当用户同意授权后,proxy.your.com会收到微信的授权回调,并把回调结果(code、state参数)原封不动地再返回给最开始发起授权的业务。

唯一的区别在于,在不使用proxy.your.com的时候,你从应用发起微信授权的链接应该是这样的: 
https://open.weixin.qq.com/connect/qrconnect?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2F&response_type=code&scope=snsapi_login&state=584bc87e11ff37492#wechat_redirect 
用了proxy.your.com之后,这个授权链接就应该是这样的: 
http://proxy.your.com/?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2Flogin%2Fnotify&response_type=code&scope=snsapi_base&state=584bc87e11ff37492&device=pc

 

  1.  突破微信小程序模板消息限制,实现无限制主动推送

如何突破模板消息的推送限制?

突破口:“1次提交表单可下发1条,多次提交下发条数独立,相互不影响”

为了突破模板消息的推送限制,实现7天内任性推送,只需收集到足够的推送码,即每次提交表单时获取到的formId。一个formId代表着开发者有向当前用户推送模板消息的一次权限。

1、客户端收集推送码

当表单组件中的属性report-submit=true时表示发送模板消息,提交表单便可以获取formId。接下来只要对原先的页面进行改造,将用户原先绑定了点击事件的界面用表单组件中的button按钮组件来代替,即把用户的交互点击的bindtap事件由表单bindsubmit来代替,从而捕获用户的点击事件来生成更多的推送码。

2、上报推送码

等待用户下一次发起网络请求时,将globalFormIds发送给服务器。

3、服务端

存储推送码(高频IO,采用Redis来存储推送码。)

4、推送模板消息

下面实现了群发的功能,针对特定用户类似。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值