【问题标题】:Firestore .NET client library authentication in Azure FunctionAzure Function 中的 Firestore .NET 客户端库身份验证
【发布时间】:2020-06-17 23:27:13
【问题描述】:

我在 C# Azure Function 应用程序中使用 Google.Cloud.Firestore 版本 1.0.0-beta22。文档说明创建服务帐户 json 文件并创建指向此 json 文件的 GOOGLE_APPLICATION_CREDENTIALS 环境变量。

我的问题是我不想将 json 文件添加到我的源存储库,即使我这样做了,我也不知道 Azure 函数将在其中运行的目录的路径,因此我无法设置环境变量。

有没有办法将凭据传递给 Firestore 客户端库,或者有任何其他解决方法来解决这个问题?

【问题讨论】:

    标签: c# google-cloud-firestore azure-functions


    【解决方案1】:

    经过多次谷歌搜索,我发现您可以从 Json 创建一个凭据并使用它来创建一个 FirestoreClient,然后您将其传递给 FirestoreDb。

     var credential = GoogleCredential.FromJson(<JSON AS STRING>);
     var channelCredentials = credential.ToChannelCredentials();
     var channel = new Channel(FirestoreClient.DefaultEndpoint.ToString(), channelCredentials);
     var client = FirestoreClient.Create(channel);
     var firestoreDb = FirestoreDb.Create("project id", client);
    

    【讨论】:

    • 我想出了如何使用 FirestoreDbBuilder 和 EmulatorDetection 连接到本地 Firestore 模拟器。这取决于环境变量 FIRESTORE_EMULATOR_HOST,在我的例子中是 localhost:8008。我想知道 Channel 和你的技术是否可行。我今晚可以试试。
    • 你也让它与模拟器一起工作吗?对于模拟器,您使用了哪些凭据?
    • @JackFox 凭据是否来自服务帐户?
    • 是的,凭据来自服务帐户
    • 帮助很大。谢谢
    【解决方案2】:

    在版本2.0.0(Google.Cloud.Firestore)中进行了简化

     FirestoreDb firestormDb = new FirestoreDbBuilder
                    {
                        ProjectId = "project id",
                        JsonCredentials = "<JSON AS STRING>"
                    }.Build();
    

    【讨论】:

    • 仅供参考,您也可以使用此技术连接到本地 Firestore 模拟器。
    猜你喜欢
    • 1970-01-01
    • 2021-02-02
    • 2021-10-29
    • 1970-01-01
    • 2018-06-21
    • 2018-09-16
    • 2013-01-26
    • 2020-03-03
    • 2016-07-09
    相关资源
    最近更新 更多