为什么我不再推荐个人开发者接触微信小程序开发

这其实是一件挺气人的事情,因为我不仅经历了微信的双标,还经历了微信无理耍智障

开始

其实在 #38 中有描述到,微信并未使用任何端到端加密技术来保护用户在聊天时的隐私与安全,然后我去查了查微信上有没有加密相关的小程序,这一查,还真有,甚至有的小程序开发者还是个人

dHNzlT.jpg

因此我也着手开发了一个以 OpenPGP (RFC 4880) 开放标准为核心的小程序,取名为 WePGPIt!

大概长这样

dHUCm4.png

开发

其实开发一个微信小程序绝非易事,虽然你看上去微信小程序使用的技术栈仍然是 Web 前端开发者熟悉的 HTML/CSS/JavaScript

但是微信则魔改出来他们的版本: WXML/WXSS

而且并不兼容大多数 HTML 语法

其实这也还能接受,微信小程序大概也有 3 年 到 4 年 的历史了,我选择了一款还算比较热门的前端开源组件库 iView-WeApp

没想到刚用的第一天按钮样式就出现了问题,查了之后才知道原来是微信更新了第二个版本的样式,导致跟 iView 的冲突了,而且更骚的是即使你去修改 app.wxss 的全局样式都没办法把微信所做的修改覆盖掉,因为这个修改竟然要比 app.wxss 的层级还要高…

根据社区给出的解决方案,把新版小程序在 app.json 中的 style: v2 给去掉,使其样式变回 version 1 这样 iView 的 Button 样式就正常了…

基本上从这点就可以悄悄地看出微信小程序对于开发者态度是多么的强硬和不友好

而且微信官方社区经常是让开发者自行提交代码片段解决,没有像 StackOverflow 一样良好的问答氛围,甚至有一些问题你可以看到从 2 年前问到现在竟然还问不出一个结果,或者有些 BUG 在 2 - 3 年前就存在了,官方也一直没有答复和解决

微信官方的开放文档质量也是十分糟糕,一些说明或者注意事项具有过时内容或者部分文档有实例,而部分直接都写的乱七八糟你都不知道它写的是什么玩意

例如在 微信开放文档 - 指南 - 生物验证

目前暂时 只支持指纹识别认证。设备支持的生物认证方式可使用 wx.checkIsSupportSoterAuthentication 查询

经过测试,iPhone 的 Face ID 也可以被正常唤起和调用,说明这就是一个过时内容

不过还好,这一部分的内容实际上在 API - 生物验证 中你就可以发现猫腻,实际上文档中是给出了 面部识别 这一验证方式的,但是不知道为什么一篇文档更新了另一篇没更新

对于第三方 Node 模块的支持能力更加差,基本上如果你用的模块/框架不是为了小程序而生的话,你 require 进去使用 99% 会直接报错

更好笑的是,微信开发者工具提供了 Base64 => UTF-8 字符串 的 atob 函数,但是当你想使用 btoa 函数从字符串转 Base64 的时候,直接报错 btoa 没有声明,压根就不存在这么个东西

因此,转 Base64 这种基础操作还得需要你从 GitHub 下载一个 兼容微信小程序的 Base64 互转模块

我已经被微信小程序如此拉跨的行为给震惊到了,但是自己在朋友的多方面协助下,例如提供备案了的域名,提供免费的服务器,不做出点东西好像真的挺可惜的

因此还是顶着这屎一样的开发环境和操蛋的规定走了下去

于是,我的第一个手巧出来的小程序 WePGPIt! 就这么诞生了…

上架,双标

于是到了上架环节,经历了大概一天多左右时间的等待,我收到了审核结果

失败了,因为微信不允许 「加密」 相关的小程序上线

对于这样的结果我自然不服气,凭什么一堆加密相关的小程序可以上线,我的却不行?

于是我提出了驳回,第二次,还是失败了

我开始搜寻,于是搜寻到一个同样结果的小程序开发者,也是开发了一个加密相关的小程序被告知无法上线:

加密解密的小程序不让审核通过?

看着官方的回答真的是如此的…官方

我只能找客服抗议

于是趁着星期一,我寻找了客服

这一找,彻底把我找懵了

dHNXYq.png

dHNjf0.png

dHNxpV.png

dHNOkn.jpg

dHUS6U.png

dHUpXF.png

这个客服简直就像一个机器人疯狂的跳针,每个回答都像是复制粘贴

我其实不止找了一次,而是三次

三次,客服的反应都像是随意的复制粘贴,完全不把你的问题当一回事

甚至叫你: 举报那些不合规范的小程序

首先我来着是要解决问题的,你作为客服没解决我的问题甚至不负责的复制粘贴答案,疯狂跳针式回答,甚至还叫我自己去举报

先不说你这个态度如何,我去举报能解决什么问题?

好,成,我真的举报了,我这一举报就是举报了三个小程序,现在两个星期都过了,微信一个屁消息都没有

行,我作为个人开发者我玩不过你这个操蛋公司,我从加密小程序改成签名验证小程序,成了吧?

这次就没有加密了,而是进行 签名验证: 验证这个消息是否为本人发出的

开发签名验证小程序

于是我开始重构整个小程序和 API

我重写了大多数的小程序页面,重写了服务端上的 Node 的 API

dHs2TO.png

根据这些版本记录,你可以看到 签名验证 的小程序很顺利地上线了,而且正常上线的有三个版本

这我还是挺开心的,甚至都有了点 「好了伤疤忘了疼」 的感觉,我也就没太计较微信疯狂双标的事情

dHy3ND.png
dHy1AO.png
dHyQHK.png
dHy84e.png

这就是新的小程序,虽然主体还叫作 WePGPIt! 但实际上真正的功能已经阉割成了 WePGP Verify It!

但是就这样吧,似乎一切都朝着好的方向发展,而且功能也增加了许多

例如自动侦测用户剪切板中是否有 PGP 签名的消息,通过只有五个字符的 「消息码」 就可以请求到一个特定的签名消息进行认证等等,因此最近我还在考虑重构服务端的 API 使其设计成 RESTful API…

但是就在最近一个版本 1.2.2 版本的更新中,意想不到的事情又发生了

1.2.2 版本比较正式版的 1.2.1 版本,仅仅是更新了一个菜单栏的颜色

这是 正式版 (已经正常上架版本) 1.2.1 的样貌

dH6dz9.png

这是 1.2.2 未上线版的样貌

dH6aRJ.png

我竟然再次被拒绝了上架,原因是…

dHcJOI.png

我看到这个东西我差点就没喷口水出来,我好奇地点了进去看看客服发现了什么…结果

dHccmq.png

详情描述涉及平台未允许的内容:加密。

截图: dHcb0x.png

dHgpjA.png

请问一下这位审核人员,你哪双神奇的眼睛看到了我的小程序具有 加密 内容的

眼睛不好使吗?这叫做验证

验证和加密本质上有巨大区别的好吗?中文不过关可以考虑幼稚园重读

dHgKun.png

于是就这样我连续重新驳回了两次,总共三次审核全部都是同样的理由和同样的截图

非常过分的是,他用了三个同样的截图跟我说,你的小程序有加密功能,涉嫌违规,不给上架

但是这截图里面 压根 就完全没有涉及到加密的任何功能,而这次 1.2.2 的更新就完全只是更新了 顶栏颜色

而且根据数据显示,我的小程序压根就没有提供任何加密相关的页面,更别说加密功能了

dH2Wz4.png

我第一次跟他解释了加密和验证的区别,第二次我甚至亲自教他如何使用我的小程序,如何能打开验证签名成功的界面

结果两次驳回,全部采用同样的理由,同样的截图,似乎都没看见我说的话一般拒绝我的上架请求

如此的随便,如此的不专业

我的两次驳回留言字数均100字以上,而他,返回来的结果就他奶奶个腿的十二个字

十二个字!还有三张完全一样的,我小程序 主页 的截图

WOW!

微信是多么的狗啊,多么会欺负个人开发者啊

有了巨大的用户基数就开始为所欲为,想双标就双标,不爽你就不给上架,客服复制粘贴,驳回相应态度十分糟糕,证据完全不充分体现了整个流程都非常,极为不专业!

到这里,我已经停用了小程序,进入了注销小程序的环节,并且也完全删除了所有小程序的项目

完全按着自己的心情和 「自己认为」 的东西去做审核,无中生有,态度恶劣;随意抹灭个人开发者的所有劳动成果