Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法通过JSON密钥文件本身而不是文件路径进行Google Cloud Python身份验证?_Python_Authentication_Google Cloud Platform_Environment Variables - Fatal编程技术网

有没有办法通过JSON密钥文件本身而不是文件路径进行Google Cloud Python身份验证?

有没有办法通过JSON密钥文件本身而不是文件路径进行Google Cloud Python身份验证?,python,authentication,google-cloud-platform,environment-variables,Python,Authentication,Google Cloud Platform,Environment Variables,因此,对于Ruby,您可以将JSON内容设置为环境变量GOOGLE\u CLOUD\u KEYFILE\u JSON。我正在尝试查找Python文档,但我看到的只是加载文件路径验证的文档。不,您需要使用JSON文件路径设置GOOGLE\u应用程序\u凭据 有关详细信息,请参阅。我找到了一种方法,但我想知道是否有更好的方法。使用googleauth库,我可以做如下操作: import json from google.cloud import bigquery from google.oauth

因此,对于Ruby,您可以将JSON内容设置为环境变量
GOOGLE\u CLOUD\u KEYFILE\u JSON
。我正在尝试查找Python文档,但我看到的只是加载文件路径验证的文档。

不,您需要使用JSON文件路径设置
GOOGLE\u应用程序\u凭据


有关详细信息,请参阅。

我找到了一种方法,但我想知道是否有更好的方法。使用
googleauth
库,我可以做如下操作:

import json

from google.cloud import bigquery
from google.oauth2 import service_account

"""
Securely get content of JSON file from protected memory because having
the credential file plainly on the filesystem is unsafe
"""

service_account_info = json.loads(json_file_content_string)
credentials = service_account.Credentials.from_service_account_info(service_account_info)
client = bigquery.Client(project='secret-proj', credentials=credentials)

有关此库的更多信息,请参见:

您应该能够使用以下命令读取Python上的环境变量:

import os
print os.environ['GOOGLE_CLOUD_KEYFILE_JSON']

对不起,你的回答对我毫无帮助。我已经阅读了这些文档,但谷歌肯定需要更新它们,因为这些文档不包含ruby专有答案
Google\u CLOUD\u KEYFILE\u JSON
。所以我一般不信任他们。所以根据,我知道数据存储可以自动读取
google\u cloud\u KEYFILE\u JSON
作为JSON文件的内容,但是根据,我只能提供JSON的路径,出于安全原因,我不想把文件放在非易失性内存中。因此Python可以读取环境变量,但它不能帮助我进行身份验证。即使在启用
googlecloudruby
Datastore autoreads
google\u cloud\u KEYFILE\u JSON
时,您也需要使用
export google\u APPLICATION\u CREDENTIALS=“/path/to/KEYFILE.JSON”
将JSON路径放在环境变量上。它与Python的工作原理完全相同,唯一的区别是它不会自动读取。让我澄清一下:
googlecloudruby
根本不需要指向
keyfile.json
的路径
GOOGLE\u CLOUD\u KEYFILE\u JSON
只需要JSON的内容。如果我想在ruby中为它提供路径,我会使用
GOOGLE\u CLOUD\u KEYFILE
。另外,
googlecloudpython
不使用
google\u cloud\u KEYFILE\u JSON