猿问

Google 应用程序凭据问题

您好首先这是我第一次使用谷歌的服务。我正在尝试使用 Google AutoML Vision Api(自定义模型)开发应用程序。我已经构建了一个自定义模型并生成了 API 密钥(我希望我做得正确)。


经过多次尝试通过 Ionics 和 Android 进行开发并且未能连接到 API。


我现在已经在 Python(在 Google Colab 上)中使用了给定代码的预测建模,即使这样我仍然收到一条错误消息,指出无法自动确定凭据。我不确定我在哪里出错了。请帮忙。快死了。


#installing & importing libraries 


!pip3 install google-cloud-automl


import sys  


from google.cloud import automl_v1beta1

from google.cloud.automl_v1beta1.proto import service_pb2



#import key.json file generated by GOOGLE_APPLICATION_CREDENTIALS

from google.colab import files

credentials = 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 request

buckets = list(storage_client.list_buckets())

print(buckets)





#import image for prediction

from google.colab import files

YOUR_LOCAL_IMAGE_FILE = files.upload()



#prediction code from modelling

def 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))

运行最后一行代码时的错误消息:

皈依舞
浏览 275回答 1
1回答

江户川乱折腾

credentials = files.upload()storage_client = storage.Client.from_service_account_json(credentials)这两行是我认为的问题。第一个实际加载文件的内容,但第二个需要文件的路径,而不是内容。让我们先解决第一行:我看到credentials在调用后传递你得到的credentials = files.upload()将不起作用,如它的文档中所解释的那样。像你正在做的credentials那样做,实际上并不直接包含文件的值,而是文件名和内容的字典。假设您只上传 1 个凭据文件,您可以像这样获取文件的内容(从这个 SO 答案中窃取):from google.colab import filesuploaded = files.upload()credentials_as_string = uploaded[uploaded.keys()[0]]所以现在我们实际上将上传文件的内容作为一个字符串,下一步是从中创建一个实际的凭据对象。Github 上的这个答案显示了如何从转换为 json 的字符串创建凭据对象。import jsonfrom google.oauth2 import service_accountcredentials_as_dict = json.loads(credentials_as_string)credentials = service_account.Credentials.from_service_account_info(credentials_as_dict)最后我们可以使用这个凭证对象创建存储客户端对象:storage_client = storage.Client(credentials=credentials)请注意,我没有对此进行测试,所以请试一试,看看它是否真的有效。
随时随地看视频慕课网APP

相关分类

Python
我要回答