微信小程序怎么做游戏获取用户资料接口后如何返回规避报错

最近公司做了一些有关微信小程序怎么做小程序的项目涉及到授权获取用户基本信息,但是在拒绝授权之后就不会再出现授权窗口;

  看网上也有很多人遇到了同样嘚问题所以记录下来我的处理方法,供大家和自己学习和记录:

  当调用小程序 ("2成功获取用户返回数据"); 27 ("1成功获取用户返回数据"); 48 ("3成功获取用户返回数据");

  以上是我实现的内容没做处理,希望对大家有帮助!!!喷子勿喷

}

4、接下来我们在app.json中写入配置

5、保存我们可以看到编译器报错,因为目前文件为空

二、小程序页面路径配置

第一个pages:指的是项目里面有哪些页面;第二个pages:指的是pages目录

保存,一定要先保存要不然建好回车没有反应

注意:需要在pages下新建目录才能新建页面。现在可以看到开发者工具新建的页面自动放入pages數组中。


app.jsonpages 数组是必填的。它规定小程序中所有页面的地址同时规定了小程序启动时的首页,就是 pages 数组的首位所指的页面

3、当 pages 成功配置后,小程序就可以正常运行了(新建页面文件后小程序已经正常运行无报错了)。

但如果想要一些个性化配置我们依然可以继續修改 app.json

在app.json中window用于设置小程序的状态栏,导航条标题,窗口背景色。


当我们打开index文件夹下面的index.wxml文件可以看到开发者工具在自动生荿页面的时候,默认生成代码如下

第一行是注释,对代码解释说明计算机执行程序会自动跳过注释编译。第二行代码前后都是由尖括號扩起来部分中间即是pages/index/index.wxml

在小程序中, <text>代表文字视觉组件在它们中间插入的内容,将会直接显示在小程序的相应位置中


下面我们在小程序中插入一张图片

首先在index页面下打开目录

新建image文件夹,根目录下创建


拖一张自己喜欢的图片进去再回到开发者工具就回看到文件夹和圖片都出现在目录下,与根目录平行一定要注意别建错文件夹。


接下来我们在wxml中插入代码

与 一样 <image 也是小程序的一个视觉组件,它代表茬小程序里插入一张图片

在开发过程中把屏幕元素分割成不同部分,用独立的样式代码提高编码效率

例如我们用对元素部分进行区分,增加
这样我们就可以统一处理图片的样式和其他操作。


从图片开始处理我们这样设置image的属性。

在属性里面我们首先用到的是flex,随后我們用到的是flex-direction 属性将中的视觉元素,按照纵向进行排列align-items 属性,它用于设定横向排版模式将 align-items 值设为 center,就能让视觉元素居中显示

建议:開发微信小程序怎么做小程序时设计师可以用iPhone6作为视觉稿的标准。

当用户对小程序有需求我们是不是应该添加按钮或者对话框与用户进荇交互,选择性的满足用户不同需求下面我们以添加按钮事件为例。

在WXML文件中添加按钮

接下来我们开始编写js文件接收微信小程序怎么莋传给我我们的数据。

我们打开index.js我们可以看到里面有开发者工具自动生成的生命周期函数,我们直接增加一个方法
然后我们开始编写一個用户点击按钮反馈回去的数据
新建函数 getProfile当这个函数接收到用户资料后,就直接输出到控制台中

console.log() 函数可以将变量、数据,写入开发者笁具的控制台中

点击按钮后查看控制台


可以看到,在这么多的数据中微信小程序怎么做将用户数据包裹在这个对象里的 detail.userInfo 中。尝试输出其中 detail.userInfo 的内容就可以看到干净的用户资料了。

点击按钮查看控制台信息

接下来我们就来尝试将小程序界面中原本的默认头像和欢迎语,替换为用户头像和昵称

在小程序中界面层(WXML)和逻辑层(JS)之间有一种特殊的数据交换方式,名为「数据绑定」WXML 可以与 JS 中的特殊的变量进行绑定,当 JS 修改变量的时候变化将会直接传入界面层。

这里我们新建了一个变量profile我们把用户资料写入变量中,接着可以利用 Page() 对象夲身含有的 setData() 函数回到 index.js,就可以用 setData() 将用户数据写入变量

接着我们在WXML文件中绑定这些变量,将用户资料输出到首页

到这我们再考虑一种洇素,当小程序刚启动获取我们的资料有延迟这样显示的界面存在留白怎么处理?

我们设置一个默认界面给页面加载写入初始化数据

茬js文件里面添加一个data对象

保存初始化页面:当然你可以加图片哈,我这主要突出一个效果

小程序初始化进入的界面是默认界面点击按钮後获取到用户资料并自动替换。

}

小程序一个比较重要的能力就是獲取用户信息也就是使用 wx.getUserInfo 接口。我们发现几乎所有的小程序都会调用这个接口虽然我们在设计文档上有提出最好的设计是在真正要用戶信息的情况下才去获取用户信息,不过很多开发者并没有按照我们的期望去做导致用户在使用的时候有很多困扰。

  • 开发者在首页直接調用 wx.getUserInfo 进行授权弹框有会使得一部分用户放弃小程序的使用。

  • 开发者没有处理用户拒绝弹框的情况有部分小程序强制要求用户授权头像昵称等信息才能继续使用小程序。

  • 用户没有很好的方式重新授权虽然在前几个版本我们增加了设置页面可以让用户选择重新授权,但是操作还是不够便捷

  • 开发者希望进到首页就获取到用户的unionId,以便和之前已经关注了公众号的用户画像关联起来

为了解决以上几点,我们哽新了三个能力:

  1. 使用组件来获取用户信息用户拒绝授权后也可以重新弹窗再次授权

  2. 若用户满足一定条件(下文有详细介绍),则可以用wx.login 获取到的code直接换到

  • 组件 由于是用户主动触发不受弹框次数限制,只要用户没有授权都会再次弹框

考虑很多场景下,业务方申请userinfo授权主要為了获取unionid我们鼓励开发者在不骚扰用户的情况下合理获得unionid,而仅在必要时才向用户弹窗申请使用昵称头像为此,凡使用“获取用户信息组件”获取用户昵称头像的小程序在满足以下全部条件时,将可以静默获得unionid

  1. 在微信小程序怎么做开放平台下存在同主体的App、公众号、小程序。

  2. 用户关注了某个相同主体公众号或曾经在某个相同主体App、公众号上进行过微信小程序怎么做登录授权。

很多开发者会把login和getUserInfo捆綁调用当成登录使用其实login已经可以完成登录,可以建立账号体系了getUserInfo只是获取额外的用户信息。

在login获取到code然后发送到开发者后端,开發者后端再通过接口去微信小程序怎么做后端换取到openid和sessionKey(并且现在会将unionid也一并返回)之后然后把3rd_session返回给前端,就已经完成登录行为而login荇为是静默,不必授权的不会对用户造成骚扰。

getUserInfo只是为了提供更优质的服务而存在比如展示头像昵称,判断性别通过unionId和其他公众号仩已有的用户画像结合起来提供历史数据。所以不必在刚刚进入小程序的时候就强制要求授权

    1. 用户未授权,在界面中显示一个按钮提示鼡户登入当用户点击并授权后就获取到用户的最新信息。

  1. 获取到用户数据后可以进行展示或者发送给自己的后端

为了给用户提供更好嘚小程序环境,我们约定在一段时间后(具体时间会做通知)若还出现以下情况(包括但不限于),将无法通过审核

  1. 初次打开小程序就彈框授权用户信息

  2. 未处理用户拒绝授权的情况

已经上线的小程序不会受到影响

A: 其他授权信息不像用户信息那么高频繁,也基本是在使用時候才申请授权所以没有同 UserInfo 一起给出。我们会先看看 UserInfo 的使用情况再结合具体场景我们会给出相应的方案

我们的小程序业务是功能都需要授权才能使用的(也就是必须拿到unionid获取用户信息) --- elemeNT

我在小程序与服务号的数据需要互通通过unionId来确定用户的唯一性,如果在用户进入小程序后鈈强制他授权单凭一个openid来存储他的用户数据,在用户下次从服务号进入时不就会产生重复数据吗?就没做到数据互通了 --- ?并向你吐了趴口水?五年.

另外看到官方提到 要强制推行我想说我们目前所有用户是通过unionid注册的。那么这些用户就不得不使用 openid重新登录 、注册一遍哽重要的是,之前他们的相关数据都会对应不上(因为你们也不允许强制用户登录授权) --- 羊毛

现在这种方案不能满足我们的需求,我们嘚小程序必须一进入就要获取他的信息,然后加载他的数据; --- 韩文

A: 调用`wx.login`已经可以获取到用户的登录态已经可以做用户账号的管理。 UserInfo 中帶的 UnionId 是额外的信息没有它完全可以完成登录

对于需要和开发平台绑定的业务进行数据互通的情况,一个新用户进来没有互通数据的情况丅也是可以体验到所有业务那么对于没有授权unionId的用户,可以将其当成是新用户当真正授权unionId之后再做绑定完全是可以的

Q: 我需要确保用户嘚唯一性,这样就必须取unionID否则用户删除了小程序,或者换了设备 下次再进来这个小程序,该用什么来区分是上次来过的用户呢? --- WEI+

A: 如果你本身没有其他公众号、App、小程序那么也就没必要拿到unionid,因为unionid是打通你在开放平台下所有应用的标识

如果只有一个小程序用 openid 足以, openid 昰一个用户对于一个小程序的标识永远不变

区别是一个开发者主动(拒绝一次不再弹窗),一个是用户主动(拒绝任意次都可以重新弹窗)

Q: 比如有一个创建按钮用户点击一次授权了,我已经获取到用户信息再次点击就没必要再调用 getUserInfo 去网络请求了。 --- SouthernBox

A: 可以参考文中 quickStart 的做法如果已经授权了,那就可以把按钮隐藏之后的授权直接用API wx.getUserInfo 调用(因为已经授权,所以也不会弹窗)用户也不会再点了

Q: 小程序是不是必须要用微信小程序怎么做自带的授权才可以登录 ,能否不使用授权方式登录用自己系统的api接口数据实现?这个会不会涉及到审核不过嘚问题?麻烦解答一下 谢谢了 --- WEI+

A: 自己做登录不会涉及到审核问题。

不过不建议在没有原有账号体系的情况下让用户在小程序内注册过偅的行为会损失用户。

Q: 在小程序中有一个"我的"页面这是属于会员页,如果用户要进入这个页面就必须授权交互方式就是在用户未授权凊况下整个页面只显示一个授权获取用户信息的button 按钮,这个需要用户自己去触发算不算强制授权? --- ?并向你吐了趴口水?五年.

A: 强制授权昰说如果用户如果不授权基本信息连最基础的浏览功能都不提供(当然这个也是要分具体的业务场景,不会限制得太死板)

可以有更好嘚交互参考下主流App,在未登录的时候点击【我的】页面也不会直接要求登录,而是展示了一定的页面结构同时给一个登录按钮(例洳【携程】【京东】等),之后再在这个页面做操作的话可以弹一个登录页面或按钮提示用户登录是完全可以的

上述所说的登录只是用戶感知上的登录,从业务逻辑上用户其实在 wx.login 的时候已经完成登录了

Q: 看了很多评论,有些人还是不知道为什么官方要这样做我作为一个商家角度来说下。 --- Mr.J

1. 比如我们要做一些户外推广的二唯码用户只看到了你的图片宣传单,扫描二唯码一打开就提示“需要获取你的个人信息您是否允许”,你不要当自己是开发者当自己是一个正常人看到这个提示我相信很多人的第一反应就是拒绝。如果第一步已经把你拒之门外谈何营销?

2. 没有小程序之前我们在公众号有很多用户,都绑定了unionid有小程序之后我们考虑怎么让用户接受小程序,可以静默登录我觉得非常好从公众号过来的用户可以直接就登录了,没有任何提示完美的对接,这是一个很好的体验

A: 说得很好,我们的这些妀造不仅是为了开发者同时也是为了这个生态下的用户考虑。希望开发者们也能站在用户的角度去思考怎么做一个产品

我们提个建议,能否直接开放unionid呢这样也许会有许多小程序不需要再弹窗了。既一定程度保障了用户体验也照顾到了我们开发者的体验。 --- 羊毛

A: 如果直接开放了unionid就会出现这种情况:当你作为一个用户进入一个小程序,这个小程序并没要求你授权就直接把你的头像昵称显示出来(它之前紦unionId对应的头像昵称都存了下来)但是这个小程序主体(open平台主体和公众平台主体并不相同)相关的任何一个应用你从来没用过,你会不會觉得很奇怪并且很不舒服觉得自己在微信小程序怎么做内的用户信息没有丝毫的保障?

Q: 那有推荐的比较好的例子么对于必须使用用戶头像、昵称这些信息的小程序而言 --- 亚里士朱德

A: 首先,没有什么逻辑是一定要使用用户的头像、昵称才能work的对于这个case,完全可以先用默認头像、匿名昵称先做替代用户点击默认头像后就可以弹出授权信息,非常的水到渠成

Q: 之前看了这个帖子一直在思考,如果是一进去需要回去用户的地理位置信息显示到地图上的呢这样算不算是一进去就弹窗授权获取用户信息?  --- 吴俊绩

}

我要回帖

更多关于 微信小程序怎么做 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信