无用户登录场景下,后端调用Vertex AI如何获取有效访问令牌?
解决Vertex AI后端请求的令牌过期问题
核心方案:用服务账号自动管理令牌生命周期
由于你是向自身项目发起请求,无需用户登录,最佳方式是通过服务账号密钥结合Google官方客户端库,自动处理令牌的获取与过期刷新,完全不用手动维护令牌。
步骤1:创建并配置服务账号
- 进入Google Cloud Console的「IAM与管理员」>「服务账号」页面,创建新服务账号。
- 为该服务账号分配最小必要权限,比如
Vertex AI User(仅用于调用Vertex AI)或根据需求调整。 - 生成并下载该服务账号的JSON格式密钥文件,存储到后端服务器的安全目录(绝对不能泄露或提交到代码仓库)。
步骤2:用客户端库自动处理令牌(推荐)
Google官方客户端库会自动完成令牌的获取、缓存和到期刷新,无需手动干预。以Python为例:
- 设置环境变量指向密钥文件:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json" - 调用Vertex AI的示例代码:
from google.cloud import aiplatform # 初始化Vertex AI客户端 aiplatform.init(project="你的项目ID", location="us-central1") # 指定模型(以Text Bison为例) model = aiplatform.Model("projects/你的项目ID/locations/us-central1/models/text-bison@001") # 发起请求 response = model.predict( instances=[{"prompt": "你的提示词内容"}], parameters={"temperature": 0.7, "max_output_tokens": 256} ) print(response.predictions)
步骤3:手动获取可刷新的令牌(非必要场景)
如果无法使用客户端库,可通过服务账号密钥手动生成并刷新令牌:
import requests from google.oauth2 import service_account # 定义权限范围 SCOPES = ["https://www.googleapis.com/auth/cloud-platform"] # 密钥文件路径 SERVICE_ACCOUNT_FILE = "/path/to/your/service-account-key.json" # 生成凭证对象 credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES ) # 获取当前访问令牌 access_token = credentials.token # 令牌过期时,调用以下代码刷新 if credentials.expired: credentials.refresh(requests.Request()) new_access_token = credentials.token
注意事项
- 服务账号密钥需严格保密,一旦泄露立即在Cloud Console中吊销并重新生成。
- 权限遵循最小化原则,避免给服务账号分配过高权限(如Owner)。
内容的提问来源于stack exchange,提问作者Muhammed Tüfekyapan
相关产品推荐
相关产品推荐

