未登录状态访问云资源报错?
背景:
- 使用小程序云开发共享环境给公众号使用
- 在上手时复制了官方给的公众号使用云开发的html示例
- 使用示例中“未登录状态调用云资源”,报错代码为 -501023 或 -401011
可能原因
首先,-401011通常为【云函数不存在】,-501023似乎和权限有关
(1)云函数未部署上传
这是比较常见的疏忽,云函数写完了本地调试就不管了,忘记上传部署
解决:右键对应云函数---上传并部署
通常选择云端安装node_modules,除非一直提示失败,那么就把所有文件上传
(2)云资源或云函数权限限制
在 云开发---右上角设置---权限设置---滑到下面将对应环境云资源设置允许未登录
在 云开发---云函数---云函数权限 设置为允许所有用户访问(本步骤的有效性未确认,我用了上面那个就好了)
(3)云数据库权限未设置为自定义
如果是完全照抄官方给的例子,他调用云资源的示例是去访问云数据库的test集合。首先确认你有这个集合,并在上面菜单中权限一栏将权限改为最底端的自定义,允许所有人读取
番外:调用云函数返回undefined
- 背景:刚刚上手测试的时候,想要确认是不是可以未登录调用云函数,所以就简单改了一下官方给的调用云数据库的例子,用【callFunction】方法调云函数
- 问题:经过上面说的方法解决了报错问题,但返回值仍是undefined
- 解决:最后发现是忽略了调用云数据库和云函数方法返回值的区别,所以在callFunction里没有写success回调。补回success回调后就能在success里获取到实际的返回值了
总结
官方给的例子真的太简洁了,又连一点详细的说明都没有,啪啪啪给你扔一个html和两个云函数让你去试,对于我这种新人小白真的太难受了。。