You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unreal Engine MetaHuman对接Dialogflow REST API的OAuth2认证问题求助

解决Dialogflow REST API OAuth2认证401错误的方案

一、正确获取并使用认证凭据

Dialogflow REST API必须通过身份验证,无法跳过OAuth2环节,按以下步骤配置:

  • 生成服务账号密钥:登录Google Cloud控制台,找到你的Dialogflow关联项目,进入「IAM与管理」→「服务账号」,创建对应服务账号后,生成并下载JSON格式的密钥文件。
  • 获取OAuth2访问令牌:通过Google令牌服务,用服务账号密钥生成的JWT换取访问令牌。可以用curl快速测试:
    curl -X POST "https://oauth2.googleapis.com/token" \
      -H "Content-Type: application/x-www-form-urlencoded" \
      -d "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=你的JWT内容"
    
    在Unreal Engine中,可以通过HTTP模块实现这个请求流程,或者借助第三方JWT库生成所需的断言内容。
  • 在API请求中携带令牌:每次调用Dialogflow API时,在请求头中添加Authorization: Bearer 你的访问令牌,确保请求被正确授权。

二、Unreal Engine中的落地实现要点

  • 将服务账号密钥文件作为资源导入项目,注意发布时不要将密钥暴露在公开分发的包体中。
  • 使用Unreal的HTTP模块构建请求时,添加认证头的示例代码:
    TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
    Request->SetURL("https://dialogflow.googleapis.com/v2/projects/你的项目ID/agent");
    Request->SetHeader(TEXT("Authorization"), TEXT("Bearer ") + FString(TEXT("你的访问令牌")));
    Request->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
    
  • 处理令牌过期:访问令牌有效期默认1小时,需在逻辑中添加过期检测,到期自动重新获取新令牌。

三、关于关闭OAuth2验证的说明

Dialogflow官方API(包含REST和gRPC)强制要求身份验证,没有关闭OAuth2验证的选项。所有请求必须携带有效凭据,否则会持续返回401未授权错误。

内容的提问来源于stack exchange,提问作者Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:35:04