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

Python/Postman调用Google Vertex AI端点报401认证错误问题

问题根因

返回ACCESS_TOKEN_TYPE_UNSUPPORTED的核心原因是你填入Postman的Bearer Token不是Vertex AI接口认可的有效OAuth2短期访问令牌,常见错误是误用了API Key、服务账号密钥的ID字段、或者过期/权限范围不匹配的令牌。

Postman调试正确配置
  • 先确认调用端点使用的服务账号,已被授予Vertex AI Predictor(角色ID:roles/aiplatform.predictor)权限。
  • 不要直接把服务账号JSON文件里的任意字段值当Token填入,需要先生成授权范围为https://www.googleapis.com/auth/cloud-platform的短期OAuth2访问令牌,这类令牌默认有效期1小时,通常以ya29.为前缀。
  • 把生成的有效访问令牌填入Postman的Bearer Token栏,不要额外加引号、重复填写Bearer前缀。
  • 检查请求URL内的[LOCATION]/[PROJECT ID]/[ENDPOINT ID]占位符已全部替换为实际值,无残留方括号。
Python后端调用实现

优先使用官方SDK实现,无需手动处理令牌生成、刷新逻辑,稳定性更高。

方案1:官方SDK调用(推荐)

  1. 安装依赖
pip install google-cloud-aiplatform
  1. 调用示例代码
from google.cloud import aiplatform
from google.oauth2 import service_account

# 替换为实际配置
SA_KEY_PATH = "/path/to/your/service-account-key.json"
YOUR_PROJECT_ID = "替换为你的GCP项目ID"
YOUR_REGION = "替换为端点部署区域,如us-central1"
YOUR_ENDPOINT_ID = "替换为你的端点ID"

# 加载凭证
creds = service_account.Credentials.from_service_account_file(
    SA_KEY_PATH,
    scopes=["https://www.googleapis.com/auth/cloud-platform"]
)

# 初始化端点
aiplatform.init(project=YOUR_PROJECT_ID, location=YOUR_REGION, credentials=creds)
endpoint = aiplatform.Endpoint(
    f"projects/{YOUR_PROJECT_ID}/locations/{YOUR_REGION}/endpoints/{YOUR_ENDPOINT_ID}"
)

# 替换为模型要求的输入格式
predict_instances = [{"input_key": "input_value"}]
result = endpoint.predict(instances=predict_instances)
print(result.predictions)

如果你的Python服务跑在GCP自有环境(Cloud Run、GCE、GKE等),可以直接绑定对应权限的服务账号到运行环境,无需手动加载SA密钥文件,SDK会自动从环境获取凭证。

方案2:原生HTTP请求调用

如果不想引入SDK,可以直接用requests库发请求,配合google-auth库自动管理令牌。

  1. 安装依赖
pip install requests google-auth
  1. 调用示例代码
import requests
from google.oauth2 import service_account
from google.auth.transport.requests import Request

# 替换为实际配置
SA_KEY_PATH = "/path/to/your/service-account-key.json"
YOUR_PROJECT_ID = "替换为你的GCP项目ID"
YOUR_REGION = "替换为端点部署区域,如us-central1"
YOUR_ENDPOINT_ID = "替换为你的端点ID"
REQUEST_URL = f"https://{YOUR_REGION}-aiplatform.googleapis.com/v1/projects/{YOUR_PROJECT_ID}/locations/{YOUR_REGION}/endpoints/{YOUR_ENDPOINT_ID}:predict"

# 自动获取/刷新访问令牌
creds = service_account.Credentials.from_service_account_file(
    SA_KEY_PATH,
    scopes=["https://www.googleapis.com/auth/cloud-platform"]
)
creds.refresh(Request())
headers = {
    "Authorization": f"Bearer {creds.token}",
    "Content-Type": "application/json"
}

# 替换为模型要求的输入格式
payload = {"instances": [{"input_key": "input_value"}]}
resp = requests.post(REQUEST_URL, headers=headers, json=payload)
resp.raise_for_status()
print(resp.json())
注意事项
  • 生产环境不要把服务账号密钥硬编码在代码里,也不要提交到代码仓库,建议通过环境变量、Secret Manager、工作负载身份等方式注入凭证。
  • 如果令牌正确但仍返回权限错误,检查服务账号是否被加入端点所在项目的IAM列表,且绑定了正确的预测调用角色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:36:22