【问题标题】:Connecting Rails Application to Firebase Cloud Firestore将 Rails 应用程序连接到 Firebase Cloud Firestore
【发布时间】:2020-09-14 20:24:57
【问题描述】:

想要从 Firebase Cloud Firestore 读取数据。我已经创建了一个项目,并通过设置将我的 Rails (6.0.3) 应用程序添加到 fire store db -> 添加 web 应用程序。这为我提供了包含 firevbase SDK 的脚本标签,以添加到我的 web 应用程序的 body 标签下,我做了所有这些。 我正在尝试按照@https://firebase.google.com/docs/firestore/quickstart?authuser=0#ruby 的说明进行操作。第一条指令如下: ''' 导出 GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json" ''' 我已经通过从与我的 firebase 项目关联的服务帐户创建一个密钥来下载此 JSON 文件,该密钥已下载并放置在我的项目树中。但是我不知道在我的 Rails 环境中将导出谷歌信用放在哪里?以前我尝试将其插入 environment/development.rb 但 export 关键字不是 Ruby 语法的一部分。

我已经安装了 cloud-firestore-gem,我一直在努力完成这篇文章,试图将所有东西拼凑在一起How to connect to a Firestore database with Ruby。当我在 rails 控制台中运行它时:

cred = Google::Cloud::Firestore::Credentials.new("path/to/myJsonSerivcesKey.Json") 

我收到这条回溯:

Signet::AuthorizationError (Authorization failed.  Server message:)
{"error":"invalid_scope","error_description":"Invalid OAuth scope or ID token audience provided."}

我认为这个错误与我在使用服务帐户中的 API 密钥时没有做正确的事情有关,但我不太确定。有关如何更正无效 OAuth 范围以及将导出 GOOGLE_APPLICATIONS+CREDENTIALS 放在何处的任何建议都会很棒。另外我不确定为什么需要将 Firebase SDK 粘贴到应用程序的主体标签中,有人可以解释一下这对应用程序有什么作用吗?

【问题讨论】:

标签: ruby-on-rails ruby firebase google-cloud-firestore firebase-console


【解决方案1】:

我遇到了同样的问题,但除了 google-cloud-firestore 之外,我还使用了 google-cloud-storage

为我解决的问题是通过将我的 gem 文件更改为 gem 'google-cloud-storage', '<= 1.21.1' 来降级云存储 gem。

【讨论】:

    【解决方案2】:

    你需要传入你想要的范围:

    cred = Google::Cloud::Firestore::Credentials.new "path/to/myJsonSerivcesKey.Json",  scope: "https://www.googleapis.com/auth/datastore"
    

    List of scopes available

    【讨论】:

    • 感谢您帮助我处理Invalid OAuth scope 错误。但现在我得到GRPC::DeadlineExceeded: 4:Deadline Exceeded。关于那个有什么想法吗?我不知道从哪里开始。
    • 我建议使用完整的堆栈跟踪和重现为此打开一个单独的问题。可以是任意数量的东西,因为 GRPC 通过 Google Ruby API 被广泛使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2018-09-23
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 2017-09-27
    • 2020-11-15
    相关资源
    最近更新 更多