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

标签 firebase firebase-realtime-database google-apps-script

前一段时间我在使用 integration of Firebase in Google Apps Script作为服务器端,它运行良好,并且仍在我的旧项目中运行。

但是今天在创建了一个新的 Firebase 项目和一个新的实时数据库之后,尝试将 Firebase 项目集成到我的 Google Script project 中。我收到了 an error它不能完全工作。我意识到 Firebase deprecated database secret用于新项目。

所以,我现在的问题是如何解决这个问题?还有另一种方法可以将 Firebase 集成到 Google Script 项目中吗?

最佳答案

您需要将正确的 OAuth 范围添加到您的 Apps 脚本项目的 list 文件中,然后传入 access_token参数(或在 Authorization header 中)而不是 auth您当前使用的参数。

基于 Doug's gist here ,基本步骤是:

  • 打开 manifest.json从脚本编辑器中,通过单击查看 > 显示 list 文件。
  • 添加或编辑 list 以具有以下 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 token 并将其添加到您的请求中:
    var response = UrlFetchApp.fetch(databaseUrl, {
      method: "PUT",
      headers: {
        "Content-type": "application/json",
        "Authorization": "Bearer "+ScriptApp.getOAuthToken()
      },
      payload: JSON.stringify(json)
    });
    Logger.log(response.getContentText());
    

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

    关于firebase - 如何在不使用(已弃用)数据库 secret 的情况下将 Firebase 集成到 Google Apps 脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53207906/

    相关文章:

    Firebase Cloud Functions 和 Cloud Firestore 区域

    android - 如何从 Firebase Storage 下载文件到 Android 的 External_Storage

    node.js - 我仍然可以将 NodeJs + Express + MongoDb 与 firebase 结合使用吗?

    google-apps-script - 查找、匹配和连接

    java - 为什么我会收到此错误 "FirebaseRecyclerAdapter() in FirebaseRecyclerAdapter cannot be applied to:"

    控制台中的 Android Firebase Analytics 自定义事件报告

    ios - 我应该如何配置我的应用程序以跨类保留 Firebase 用户数据?

    ios - 在 IOS 上重新启动应用程序之前,Firebase 数据不会发送到服务器

    json - 使用 Google Apps 脚本发布 JSON 数据

    google-apps-script - 类型错误 : Cannot find function getCell in object Sheet