我写了一个Django
-Web
应用程序,它从ModelForm
接收用户输入作为Python Dict
,然后传递到Django
后端,用Google Vertex AI Prediction API进行预测,然后将预测返回给用户的Web前端。
我已经获得了一个Service Account Key (JSON)
用于获取所需的凭据。
但是我仍然面对401 Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential
同样的代码最初在2023年7月14日起作用,但它在两天前停止工作。
from google.oauth2 import service_account
from google.cloud import aiplatform
from google.protobuf import json_format
from google.protobuf.struct_pb2 import Value
def model_predict(json_data):
key_path = 'path-to-service-account-key.json'
# Create a credentials object using your service account key file
credentials = service_account.Credentials.from_service_account_file(
key_path,
scopes=['https://www.googleapis.com/auth/cloud-platform']
)
# Deployed Endpoint model configs
project_id = "project_id"
endpoint_id = "endpoint_id"
instance_dict = json_data
location = "us-central1"
api_endpoint = "us-central1-aiplatform.googleapis.com"
# The AI Platform services require regional API endpoints.
client_options = {"api_endpoint": api_endpoint}
# Initialise client that will be used to create and send requests.
client = aiplatform.gapic.PredictionServiceClient(credentials=credentials, client_options=client_options)
# Pass required configs and instance into AI Client
instance = json_format.ParseDict(instance_dict, Value())
instances = [instance]
parameters_dict = {}
parameters = json_format.ParseDict(parameters_dict, Value())
endpoint = client.endpoint_path(
project = project_id, location=location, endpoint=endpoint_id
)
response = client.predict(
endpoint=endpoint, instances=instances, parameters=parameters
)
predictions = response.predictions
for i in predictions:
result= dict(i)
return result
字符串
我想知道服务帐户密钥是否只在有限的时间内产生有效的OAuth 2令牌,或者我的代码有什么问题。
1条答案
按热度按时间h9a6wy2h1#
根据错误消息401请求的身份验证凭据无效。需要OAuth 2访问令牌、登录cookie或其他有效的身份验证凭据。你所做的请求有无效的身份验证凭据。预期的身份验证凭据包括OAuth 2访问令牌。特定的错误代码是“UNAUTHENTICATED”,这意味着请求未成功通过身份验证。
根据“创建授权凭据”文档,检查您的身份验证过程并确保您提供了正确的身份验证凭据。您可能需要生成有效的OAuth 2访问令牌或使用适当的登录cookie进行身份验证。
错误代码“401”表示用户未被授权进行请求。为请求提供的授权凭据无效。检查Authorization HTTP请求标头的值。有关详细信息,请参阅文档