如何在不使用(已弃用)数据库机密的情况下将Firebase集成到Google Apps脚本中



有一段时间,我在谷歌应用程序脚本中使用Firebase的集成作为服务器端,它运行良好,仍然在我的旧项目中运行。

但今天,在创建了一个新的Firebase项目和一个新实时数据库,然后试图将Firebase项目集成到我的Google Script项目中后,我遇到了一个错误,它无法完全工作。我意识到Firebase不赞成新项目使用数据库机密

所以,我现在的问题是如何克服这个问题?有没有其他方法可以将Firebase集成到Google Script项目中?

您需要将正确的OAuth作用域添加到Apps Script项目的清单文件中,然后传入access_token参数(或Authorization标头中(,而不是当前使用的auth参数。

根据Doug的要点,基本步骤是:

  1. 通过单击View显示清单文件,从脚本编辑器打开manifest.json
  2. 添加或编辑清单以具有以下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类型(文档、幻灯片、表单等(,则需要与该类型相对应的范围。

  3. 现在,您可以从脚本中获取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());
    

这样做的一个主要优点是,您的脚本现在将作为实际用户运行,这意味着您可以确保它只能通过安全规则执行授权操作。

最新更新