C# 无法对dialogflow v2和v2beta1上的REST API请求进行身份验证
问题是您必须但没有对呼叫进行身份验证 我鼓励您在与谷歌的服务交互时考虑使用谷歌提供的客户端库。手工制作URL、分段身份验证、日志记录等,并通过不断发展的API维护通用性,将给您带来数不清的工作 使用SDK要简单得多,建议使用SDK,并且经常受到支持,而且这些SDK保证可以正常工作 有关DialogFlow,请参见:C# 无法对dialogflow v2和v2beta1上的REST API请求进行身份验证,c#,authentication,dialogflow-es,gcloud,C#,Authentication,Dialogflow Es,Gcloud,问题是您必须但没有对呼叫进行身份验证 我鼓励您在与谷歌的服务交互时考虑使用谷歌提供的客户端库。手工制作URL、分段身份验证、日志记录等,并通过不断发展的API维护通用性,将给您带来数不清的工作 使用SDK要简单得多,建议使用SDK,并且经常受到支持,而且这些SDK保证可以正常工作 有关DialogFlow,请参见: 基于REST的(所谓的API客户端)库可用于谷歌所有服务的同一组语言。对于谷歌云平台服务,也可以使用更多的惯用库。这些被称为云客户端库 API的V2/V2beta1依赖于Googl
基于REST的(所谓的API客户端)库可用于谷歌所有服务的同一组语言。对于谷歌云平台服务,也可以使用更多的惯用库。这些被称为云客户端库 API的V2/V2beta1依赖于Google云平台服务帐户进行身份验证,而不是以前使用的客户端和开发人员访问令牌 生成服务帐户密钥 为了使用V2 API,您需要创建一个新的服务帐户并获取与该服务帐户关联的私钥。在创建服务帐户时,密钥将作为JSON文件下载 注意:您的项目将有一个现有的服务帐户,但不应更改此帐户。对于其他客户端和开发人员API访问,您应该创建一个新的服务帐户。
var rFile = GoogleCredential.FromFile(jsonkeyfilepath);
var scopeC = rFile.CreateScoped(DialogflowService.Scope.CloudPlatform);
var response = new DialogflowService(new BaseClientService.Initializer
{
HttpClientInitializer = scopeC,
ApplicationName = "project-name-here"
}).Projects.Agent.Sessions.DetectIntent(
new GoogleCloudDialogflowV2beta1DetectIntentRequest
{
QueryInput = new GoogleCloudDialogflowV2beta1QueryInput
{
Text = new GoogleCloudDialogflowV2beta1TextInput
{
Text = "your text here",
LanguageCode = "en-US"
}
}
},
$"projects/projectid/agent/sessions/34141414")
.Execute();
return (JsonConvert.SerializeObject(response.QueryResult));
请参阅。