如何使用Google Cloud JSON Service帐户文件发出C#REST请求?

时间:2018-08-02 03:50:38

标签: c# rest gcloud

我想通过一个简单的休息请求来利用新的Google TTS。为此,我创建了一个服务帐户,该服务帐户下载了一个JSON文件,其中包含私钥ID,私钥,客户电子邮件,客户ID,client_x509_cert_url等。

我还为系统设置了环境变量:

 Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", jsonFile);

然后,我发现此示例CURL请求使用Google提供的WaveNet TTS引擎:

curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
--data "{
'input':{
  'text':'Android is a mobile operating system developed by Google,
     based on the Linux kernel and designed primarily for
     touchscreen mobile devices such as smartphones and tablets.'
},
'voice':{
  'languageCode':'en-gb',
  'name':'en-GB-Standard-A',
  'ssmlGender':'FEMALE'
},
'audioConfig':{
  'audioEncoding':'MP3'
}
}" "https://texttospeech.googleapis.com/v1beta1/text:synthesize" > writtenfile.txt

我想根据上述CURL请求创建一个简单的C#webrequest,但是行“ gcloud auth application-default print-access-token” 对我来说是个问题。我无法在此计算机上安装CLI gcloud实例。是否没有某种方法可以从JSON服务帐户文件中设置webrequest授权访问令牌?当然,我没有安装gcloud。

寻找代码示例,演示如何使用不带gcloud的服务帐户json文件将CURL代码转换为C#REST请求。

1 个答案:

答案 0 :(得分:0)

如果您不想安装gcloud软件包,则可以使用 API密钥执行 REST 调用。这些键可以是created directly in the GCP console,可以将它们作为参数通过请求标头传递。这样,您无需gcloud就可以对服务进行身份验证。另外,我建议您看看此guide,其中包含使用C#进行REST请求所需的步骤。

您可以使用此Restlet Client tool测试以下示例:

REST内容示例

  • 标题

https://texttospeech.googleapis.com/v1beta1/text:synthesize?key=<YOUR_API_KEY>

  • 身体

{ 'input':{ 'text':'Android is a mobile operating system developed by Google, based on the Linux kernel and designed primarily for touchscreen mobile devices such as smartphones and tablets.' }, 'voice':{ 'languageCode':'en-gb', 'name':'en-GB-Standard-A', 'ssmlGender':'FEMALE' }, 'audioConfig':{ 'audioEncoding':'MP3' } }

最后,如果您要使用服务帐户JSON文件,可以使用客户端库create and send your TTS requests更改为authenticate them directly from your code;但是,此方法需要安装TextToSpeech软件包。