日志显示缺少权限:
errorMessage: "Permission 'iam.serviceAccounts.signBlob' denied on resource (or it may not exist)."
errorStack: "Error: Permission 'iam.serviceAccounts.signBlob' denied on resource (or it may not exist).
经过一堆排查,确认是 firebase 默认使用的 service account 没有这个权限。
查看对应云函数的使用的 servcie account:
gcloud functions describe images-getUploadUrl --gen2 --region=us-central1 --project=你的gcloud项目
返回的内容中有一项:
serviceAccount: XXXXX @developer.gserviceaccount.com
这就是这个云函数使用的 serviceAccount。在 google cloud 控制台上没找到云函数的这个信息,最后还是通过 cli 才看到。Google 的 web 控制台真是不友好。注意这个是 firebase 的 gen2 云函数。
然后到 web 控制台的 iam/serviceAccount 中给对应的账号添加角色:Service Account Token Creator
重新部署云函数(权限可以立即生效):
firebase deploy --only functions:images-getUploadUrl
返回错误404,如果不是使用默认的 bucket,需要到控制台上手动创建 bucket。
本地 firebase 模拟器是自动创建的
The query requires an index. You can create it here:
需要到控制台上手动创建 index。模拟器上似乎是不需要 index。
要避免以后发布时手动创建索引,可以把索引记录在 firestore.indexes.json ,例如
{
"indexes": [
{
"collectionGroup": "cities",
"queryScope": "COLLECTION",
"fields": [
{ "fieldPath": "country", "order": "ASCENDING" },
{ "fieldPath": "name", "order": "ASCENDING" }
]
},
// 添加您的索引定义...
]
}
注意需在 firebase.json 配置 firestore target:
{
"firestore": {
"indexes": "firestore.indexes.json"
}
}
使用 Kingfisher 避免每次都进行网络请求
Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作
友情链接: Some Online Tools Develop by Me 系统软件 程序语言 运营经验 水库文集 网络课程 微信网文