有一段时间,我在谷歌应用程序脚本中使用Firebase的集成作为服务器端,它运行良好,仍然在我的旧项目中运行。
但今天,在创建了一个新的Firebase项目和一个新实时数据库,然后试图将Firebase项目集成到我的Google Script项目中后,我遇到了一个错误,它无法完全工作。我意识到Firebase不赞成新项目使用数据库机密。
所以,我现在的问题是如何克服这个问题?有没有其他方法可以将Firebase集成到Google Script项目中?
您需要将正确的OAuth作用域添加到Apps Script项目的清单文件中,然后传入access_token
参数(或Authorization
标头中(,而不是当前使用的auth
参数。
根据Doug的要点,基本步骤是:
- 通过单击View显示清单文件,从脚本编辑器打开
manifest.json
-
添加或编辑清单以具有以下OAuth作用域:
"oauthScopes": [ "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/firebase.database", "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/spreadsheets" ]
最后一个作用域允许它访问电子表格本身。如果您使用另一种GSuite类型(文档、幻灯片、表单等(,则需要与该类型相对应的范围。
-
现在,您可以从脚本中获取OAuth令牌,并将其添加到您的请求中:
var response = UrlFetchApp.fetch(databaseUrl, { method: "PUT", headers: { "Content-type": "application/json", "Authorization": "Bearer "+ScriptApp.getOAuthToken() }, payload: JSON.stringify(json) }); Logger.log(response.getContentText());
这样做的一个主要优点是,您的脚本现在将作为实际用户运行,这意味着您可以确保它只能通过安全规则执行授权操作。