Golang 中的 Firestore gRPC API 示例用法

Posted

技术标签:

【中文标题】Golang 中的 Firestore gRPC API 示例用法【英文标题】:Firestore gRPC API Sample Usage in Golang 【发布时间】:2020-05-11 22:30:19 【问题描述】:

一般来说,Firestore 和 gRPC 的新手。我一直在试图弄清楚如何与 golang 的 Firestore RPC API 进行交互。他们很好地记录了 API here,但没有显示如何初始化连接。我的一些问题是,

    在 golang 中,我会使用 grpc 包还是内置 rpc。 我将使用什么 URL 连接到 API。 当像这样连接到基于云的 RPC API 时,我是否需要在本地拥有 .proto 文件才能与之交互? 如何使用用户 Firebase ID 令牌进行身份验证。 如何创建以所述用户身份验证的记录。

干杯。

编辑:感谢 Anar,我已经能够连接。但我无法测试任何东西,因为我不确定如何验证或创建记录。任何有关示例的帮助都会很棒。到目前为止的代码:

conn, err := grpc.Dial("firestore.googleapis.com", grpc.WithInsecure())
if err != nil 
    log.Fatalln(err)

defer conn.Close()

【问题讨论】:

【参考方案1】:

    你必须使用 google.golang.org/grpc 包

    作为文档,您必须使用firestore.googleapis.com 来创建客户端存根。

3.本地不需要它的 proto 文件。您可以创建 grpc 客户端并使用此处提供的服务器方法:https://cloud.google.com/firestore/docs/reference/rpc

【讨论】:

感谢您的回复,它回答了原始问题。您是否有使用用户 idToken 进行身份验证并在 Firestore 中创建记录的示例? 我从来没有使用过firestore服务,但是逻辑是一样的。为什么你不尝试使用 Golang firestore 包?我看,它有很好的文档,其中包括示例。我建议您阅读 pkg 和示例。 pkg.go.dev/cloud.google.com/go/firestore?tab=doc 我相信 golang sdk 只是一个 admin sdk,不支持用户级别的身份验证,这就是我坚持使用 rpc api 的原因。我很想被证明是错误的,但我还没有找到使用 firestore pkg 的方法。 糟糕,身份验证不是 firestore 软件包的一部分。对于身份验证,只需使用:firebase.google.com/docs/firestore/quickstart#go。 不是我的意思,但感谢您的回答。我已经获取了用户的身份验证 ID。我想使用该令牌以用户身份处理 Firestore RPC 请求。

以上是关于Golang 中的 Firestore gRPC API 示例用法的主要内容,如果未能解决你的问题,请参考以下文章

Grpc 在golang中的使用

无法安装 cloud_firestore 所需的 BoringSSL-GRPC (0.0.7)

gRPC - Firestore 如何实现服务器-> 客户端实时流式传输

如何安装golang的grpc插件

Golang gRPC 示例

GOLANG:自建gRPC的TLS双向验证(OpenSSL实现)