# 开发 \| 再不这样做，你的小程序就无法通过审核了！

- 作者：知晓程序
- 发布时间：2017-08-10 20:00
- 原文：https://www.ifanr.com/minapp/886723

![](https://s3.ifanr.com/wp-content/uploads/2017/07/minapp-dev-final-feature.jpg)

文 \| 花叔

7 月 26 日，[小程序官方发布了两个新变动](http://www.ifanr.com/minapp/880357)，其中一个变动是关于「获取用户信息的授权机制」的。

这次变动的意义，其实比我们想象中大。虽然晚了点，知晓程序（微信号 zxcx0101）还是想给大家解读一下，这次的更新的具体内容。

关注「知晓程序」公众号，在微信后台回复「开发」，获取小程序开发技巧精选文章。

### 微信改动了什么？

官方对这次变动的概括为：

> 为**改善用户体验**，现有小程序获取用户信息的方式将进行升级，开发者需在页面中放置按钮，**用户主动点击后才可获取用户的头像昵称等信息**。可提高用户授权成功率，同时支持用户多次点击重新授权。

这是什么意思？简而言之就是说：**以后能通过点击页面某个自定义按钮去触发用户信息授权弹框。**

关注「知晓程序」微信公众号，回复「0807」，手把手教你用新方法获取用户资料。

这是获取用户资料方式的补充方案，但问题来了，为啥官方的描述是「需在页面中放置」，为什么是「需」？是以后只能用这个新方案吗？

如果真是这样，那么事情就有点大了……

### 会影响什么？

首先**对已经在线的小程序来说，这个更新影响不大。**因为官方说了「这个变动对目前在线的小程序不限制」。

![](https://s3.ifanr.com/wp-content/uploads/2017/08/minapp-login-1.jpg)

但言外之意，是说：新上线的小程序就得这么做。也就是说，**除非你的小程序从此不迭代了，不然你一定得接受这个改变。**

那么这个不得不迎合的变动，到底会给现有小程序带来怎样的影响呢？

确实如官方所说，用户体验会改善。**因为在大部分场景下，「授权获取用户信息」的交互体验会变成「按需授权」。**

什么意思？这是怎么体现出体验得到优化的？

在说明这个问题前，我们不妨看看目前大部分小程序的授权体验是怎样的。目前的小程序中，大体有两种请求获取授权的方式。

#### 1. 直接弹授权确认弹框

包括 [Nodes](http://www.ifanr.com/minapp/831587) 在内的许多小程序，在首次进来的时候，不管需不需要用到用户信息，都统一直接就弹出一个授权弹框。

授权后，小程序会直接获取并存储用户的头像和昵称等信息，以便后续使用。

![](https://s3.ifanr.com/wp-content/uploads/2017/08/minapp-login-2.gif)

这种交互下，点击「允许」是不会有问题的。**但个别小程序在用户拒绝授权后，不会做兼容处理。**

也就是说，当用户拒绝授权时，有些小程序会直接报错，甚至没法用。（Nodes 很早意识到这个问题，早已做了兼容处理。）

#### 2. 循环提示迫使用户授权

典型的例子是「腾讯投票」。它的做法是：只要用户拒绝授权，就跳到设置页，直到用户授权了才能继续操作。

![](https://s3.ifanr.com/wp-content/uploads/2017/08/minapp-login-3.gif)

在这种情况下，用户拒绝授权，就会进入一个循环。只有在用户授权后，小程序才能终止这个循环。

**显然，小程序官方觉得这两种交互都不是最好的交互。**在他们看来，授权获取用户资料最好的体验应该是：需要用户资料的时候才发起授权操作。

目前市面上做到类似交互的小程序并不多。这里介绍一下我们团队做的「王者荣耀赛事」小程序。

关注「知晓程序」微信公众号，回复「王者」，获取王者荣耀相关小程序推荐。

在小程序发布之初，我们已经考虑到了这点，也已经将「按需授权」实现了。

![](https://s3.ifanr.com/wp-content/uploads/2017/08/minapp-login-4.gif)

用户在这个小程序里，**只有在评论的时候才需要进行授权**（因为留言需要显示昵称），所以只有在点击「发送」按钮的时候，才需要调起授权操作。

当然了，是「一开始就调起用户授权」，还是「需要的时候再去调起」，这两种方式谁更好，我也不敢下定论，**但是小程序官方目前认为，最好的是后者。**

### 为什么要这么做？

那么问题又来了，「王者荣耀赛事」小程序很早就做了这个优化。也就是说，即使小程序官方不发布这次的新变动，用现成的方法，也能做到一样的效果。

于是，有同学可能就有疑问了：为啥官方还要这么做？

我在这里斗胆猜测一下：**微信团队发布这个变动，是希望规范市场。**

小程序发布之初，好多事情很难面面俱到，有一些事情没想太清楚是情有可原的。

像用户获取信息的这个鉴权机制，其实一开始就有些问题，于是无意间会导致目前市面上的小程序，没有按照官方所认为是最好的体验方式出现。

当官方意识到问题、想要让所有小程序回归到他认为对的交互方式上时，它需要「一个台阶」和「一个手段」去纠正这个问题。

所以，你们看到这里，应该知道为啥我在文章开头的时候，就说了这个变动的意义很大。**因为这体现了小程序官方在纠正错误时的态度以及执行力**，真心点个赞。

那么现在大家应该知道，解决这个问题的「一个台阶」是什么了吧。

是新组件的特性。**通过它，微信团队可以从正面诱导开发者进行技术迭代，来纠正过错。**

那么，「一个手段」又是什么？

可能有同学已经猜到了。没错，就是审核。

官方发公众号文章时，内容仅仅只有 10 来行字。但你们不知道的是，其实在官方的开发者社区里，微信团队同步发布了一个公告：《获取用户信息方案介绍》。

![](https://s3.ifanr.com/wp-content/uploads/2017/08/minapp-login-5.jpg)

值得注意的是，在公告的末尾，有一段很重要的话：

> 为了给用户提供更好的小程序环境，我们约定在一段时间后（具体时间会做通知），若还出现以下情况（包括但不限于），将无法通过审核
> 
> - 初次打开小程序就弹框授权用户信息。
> - 未处理用户拒绝授权的情况。
> - 强制要求用户授权。
> 
> 已经上线的小程序不会受到影响。

官方很果断，很坚决，意思就是说：开发者们，你们赶紧切换交互吧，不然没法更新了。

然而，如果官方说的「初次打开小程序」包括从所有内页的打开，那么这个还是有一定工作量的。

所以这段话里，有一个不定条件：「我们约定在一段时间后」。花叔猜，官方应该是在看市场反应吧，毕竟这个改动可不小哦。

反正，**作为开发者的我们，应该赶紧行动起来，换上新机制。**毕竟这也确实是个必须纠正的错误。

微信小程序团队一直在很用心地规范整个市场，他们既服务于开发者也服务于普通用户，从这次举措可以看得出，他们想事情特别细心，也特别有条理。

我们也应该支持一下吧！

**关注「知晓程序」公众号，在微信后台回复「开发」，获取小程序开发技巧精选文章。**

![zxcx&#95;0208](https://s3.ifanr.com/wp-content/uploads/2017/02/zxcx_0208.png)
