【问题标题】:use Google Application Default Credentials without json file使用没有 json 文件的 Google Application Default Credentials
【发布时间】:2017-02-22 11:01:12
【问题描述】:

我使用 c# 创建了一个控制台应用程序。我使用了谷歌云语音 api。我按照this 示例应用程序创建了该应用程序。 为了验证语音 api,我在 main 方法中编写了以下代码

Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "path-to-json-file", EnvironmentVariableTarget.Process);

一切正常。我的问题,我必须将 exe 与 json 文件一起发送。我不想公开 json 文件。如何在代码中嵌入 json 文件内容或在没有 json 文件的情况下进行身份验证? 这样我就只能将 exe 发送给用户。

我们将不胜感激。

谢谢。

【问题讨论】:

    标签: google-speech-api google-cloud-speech


    【解决方案1】:

    对于存储 api,我找到了这个解决方案:

     Google.Apis.Auth.OAuth2.GoogleCredential cred = Google.Apis.Auth.OAuth2.GoogleCredential.FromJson(JSONString);
     var storage = Google.Cloud.Storage.V1.StorageClient.Create(cred);
    

    我可以很容易地想象到其他 api 也可以做到这一点

    【讨论】:

    • too bad Google DLP service Create 方法没有类似的重载
    【解决方案2】:

    您可以存储加密的密钥文件,然后在应用程序启动时解密该文件,并在几毫秒内(在读取内容并初始化之后)将解密的内容重写回来。

    另一种解决方案是从服务器获取(加密)并存储在应用程序变量中(解密)并用它初始化,然后在初始化后删除文件。

    【讨论】:

    • 但是如何使用存储在应用程序变量中的凭据进行身份验证?我不想将它写入 json 文件,让 API 读取它,然后再次删除 JSON 文件,这真的很难看。
    • @MrCalvin 如果您知道更好的解决方案,请告诉我,我也在搜索。
    • 我可能最终将 json 序列化为代码,加密 private_key,将其序列化回文件。但是让我们看看是否有人有更好的解决方案;-) 在我找到这个帖子之前,我问了一个类似的问题here(抱歉重复)
    • 答案与问题无关。它没有回答如何在没有必须解密的 json 文件的情况下提供凭据。
    • @Rambalac 有趣 ;) gl
    猜你喜欢
    • 1970-01-01
    • 2022-12-27
    • 1970-01-01
    • 2015-09-27
    • 2017-08-25
    • 2014-09-21
    • 2019-01-08
    • 2011-02-01
    • 1970-01-01
    相关资源
    最近更新 更多