为了账号安全,请及时绑定邮箱和手机立即绑定

Google 应用程序凭据问题

Google 应用程序凭据问题

皈依舞 2022-01-11 16:44:25
您好首先这是我第一次使用谷歌的服务。我正在尝试使用 Google AutoML Vision Api(自定义模型)开发应用程序。我已经构建了一个自定义模型并生成了 API 密钥(我希望我做得正确)。经过多次尝试通过 Ionics 和 Android 进行开发并且未能连接到 API。我现在已经在 Python(在 Google Colab 上)中使用了给定代码的预测建模,即使这样我仍然收到一条错误消息,指出无法自动确定凭据。我不确定我在哪里出错了。请帮忙。快死了。#installing & importing libraries !pip3 install google-cloud-automlimport sys  from google.cloud import automl_v1beta1from google.cloud.automl_v1beta1.proto import service_pb2#import key.json file generated by GOOGLE_APPLICATION_CREDENTIALSfrom google.colab import filescredentials = files.upload()#explicit function given by Google accounts [https://cloud.google.com/docs/authentication/production#auth-cloud-implicit-python][1]def explicit():from google.cloud import storage# Explicitly use service account credentials by specifying the private key# file.storage_client = storage.Client.from_service_account_json(credentials)# Make an authenticated API requestbuckets = list(storage_client.list_buckets())print(buckets)#import image for predictionfrom google.colab import filesYOUR_LOCAL_IMAGE_FILE = files.upload()#prediction code from modellingdef get_prediction(content, project_id, model_id):prediction_client = automl_v1beta1.PredictionServiceClient()name = 'projects/{}/locations/uscentral1/models/{}'.format(project_id,         model_id)payload = {'image': {'image_bytes': content }}params = {}request = prediction_client.predict(name, payload, params)return request  # waits till request is returned#print function substitute with values  content = YOUR_LOCAL_IMAGE_FILE project_id = "REDACTED_PROJECT_ID" model_id = "REDACTED_MODEL_ID" print (get_prediction(content, project_id,  model_id))运行最后一行代码时的错误消息:
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

credentials = files.upload()

storage_client = storage.Client.from_service_account_json(credentials)

这两行是我认为的问题。第一个实际加载文件的内容,但第二个需要文件的路径,而不是内容。


让我们先解决第一行:我看到credentials在调用后传递你得到的credentials = files.upload()将不起作用,如它的文档中所解释的那样。像你正在做的credentials那样做,实际上并不直接包含文件的值,而是文件名和内容的字典。


假设您只上传 1 个凭据文件,您可以像这样获取文件的内容(从这个 SO 答案中窃取):


from google.colab import files

uploaded = files.upload()

credentials_as_string = uploaded[uploaded.keys()[0]]

所以现在我们实际上将上传文件的内容作为一个字符串,下一步是从中创建一个实际的凭据对象。


Github 上的这个答案显示了如何从转换为 json 的字符串创建凭据对象。


import json

from google.oauth2 import service_account


credentials_as_dict = json.loads(credentials_as_string)

credentials = service_account.Credentials.from_service_account_info(credentials_as_dict)

最后我们可以使用这个凭证对象创建存储客户端对象:


storage_client = storage.Client(credentials=credentials)

请注意,我没有对此进行测试,所以请试一试,看看它是否真的有效。


查看完整回答
反对 回复 2022-01-11
  • 1 回答
  • 0 关注
  • 274 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号