Google 云语音 api 尝试使用它时抛出 403
Google cloud speech api throwing 403 when trying to use it
我正在使用 python 和 google 云语音 api 我完成了“" on ubuntu and on windows as well and when I trying to run the simple script from here - "https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/api/speech_rest.py”中的所有步骤
我收到下一个错误:
<HttpError 403 when requesting https://speech.googleapis.com/$discovery/rest?version=v1beta1 returned "Google Cloud Speech API has not been used in project google.com:cloudsdktool before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/speech.googleapis.com/overview?project=google.com:cloudsdktool then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.">
奇怪的是我没有名为 "cloudsdktool"
的项目
我 运行 "gcloud init",并链接了我在使用 "gcloud auth activate-service-account --key-file=jsonfile" 命令创建服务帐户密钥时获得的 json 文件,
我尝试在 linux 中创建 google 凭据环境变量,但我仍然得到相同的信息
所以我找到了两种方法来解决这个问题:
1 - 如果使用 google 云 sdk 并且云语音处于测试版,您需要 运行 'gcloud beta init' 而不是 'gcloud init' 然后提供 json 文件
2 - 如果您不想使用来自 google 的云 SDK,您可以直接在 python app
中传递 json 文件
这里有一些方法:
from oauth2client.client import GoogleCredentials
GoogleCredentials.from_stream('path/to/your/json')
然后你只需在 creds 上创建范围并授权,或者如果使用 grpc(streaming),你将它传递给 header,就像在示例中一样。
这是 grpc 的更改脚本:
def make_channel(host, port):
"""Creates an SSL channel with auth credentials from the environment."""
# In order to make an https call, use an ssl channel with defaults
ssl_channel = implementations.ssl_channel_credentials(None, None, None)
# Grab application default credentials from the environment
creds = GoogleCredentials.from_stream('path/to/your/json').create_scoped([SPEECH_SCOPE])
# Add a plugin to inject the creds into the header
auth_header = (
'Authorization',
'Bearer ' + creds.get_access_token().access_token)
auth_plugin = implementations.metadata_call_credentials(
lambda _, cb: cb([auth_header], None),
name='google_creds')
# compose the two together for both ssl and google auth
composite_channel = implementations.composite_channel_credentials(
ssl_channel, auth_plugin)
return implementations.secure_channel(host, port, composite_channel)
我正在使用 python 和 google 云语音 api 我完成了“
我收到下一个错误:
<HttpError 403 when requesting https://speech.googleapis.com/$discovery/rest?version=v1beta1 returned "Google Cloud Speech API has not been used in project google.com:cloudsdktool before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/speech.googleapis.com/overview?project=google.com:cloudsdktool then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.">
奇怪的是我没有名为 "cloudsdktool"
的项目我 运行 "gcloud init",并链接了我在使用 "gcloud auth activate-service-account --key-file=jsonfile" 命令创建服务帐户密钥时获得的 json 文件, 我尝试在 linux 中创建 google 凭据环境变量,但我仍然得到相同的信息
所以我找到了两种方法来解决这个问题:
1 - 如果使用 google 云 sdk 并且云语音处于测试版,您需要 运行 'gcloud beta init' 而不是 'gcloud init' 然后提供 json 文件
2 - 如果您不想使用来自 google 的云 SDK,您可以直接在 python app
中传递 json 文件这里有一些方法:
from oauth2client.client import GoogleCredentials
GoogleCredentials.from_stream('path/to/your/json')
然后你只需在 creds 上创建范围并授权,或者如果使用 grpc(streaming),你将它传递给 header,就像在示例中一样。
这是 grpc 的更改脚本:
def make_channel(host, port):
"""Creates an SSL channel with auth credentials from the environment."""
# In order to make an https call, use an ssl channel with defaults
ssl_channel = implementations.ssl_channel_credentials(None, None, None)
# Grab application default credentials from the environment
creds = GoogleCredentials.from_stream('path/to/your/json').create_scoped([SPEECH_SCOPE])
# Add a plugin to inject the creds into the header
auth_header = (
'Authorization',
'Bearer ' + creds.get_access_token().access_token)
auth_plugin = implementations.metadata_call_credentials(
lambda _, cb: cb([auth_header], None),
name='google_creds')
# compose the two together for both ssl and google auth
composite_channel = implementations.composite_channel_credentials(
ssl_channel, auth_plugin)
return implementations.secure_channel(host, port, composite_channel)