Javascript 错误:7权限被拒绝:您的应用程序已使用来自Google Cloud SDK的最终用户凭据进行身份验证
几个月前,我的websocket服务器内部没有代码更改,但现在使用它,Google speech to text api似乎不再允许使用访问令牌进行身份验证 这是我以前的工作方法,直到今天我遇到这个错误Javascript 错误:7权限被拒绝:您的应用程序已使用来自Google Cloud SDK的最终用户凭据进行身份验证,javascript,sockets,oauth,gcloud,google-speech-api,Javascript,Sockets,Oauth,Gcloud,Google Speech Api,几个月前,我的websocket服务器内部没有代码更改,但现在使用它,Google speech to text api似乎不再允许使用访问令牌进行身份验证 这是我以前的工作方法,直到今天我遇到这个错误 const client = new speech.SpeechClient({ access_token: ACCESS_TOKEN, projectId: 'project-name' }); 这使我明白了标题中的上述错误 我还尝试通过如下设置环境来切换到服务帐户(我过去使用过
const client = new speech.SpeechClient({
access_token: ACCESS_TOKEN,
projectId: 'project-name'
});
这使我明白了标题中的上述错误
我还尝试通过如下设置环境来切换到服务帐户(我过去使用过)
export GOOGLE_APPLICATION_CREDENTIALS="path-to-key.json"
然后,我在不使用上述代码的情况下运行客户端,而是运行:
const client = new speech.SpeechClient();
这让我明白了这个美丽的错误,即使环境是用项目Id设置的
Error: Unable to detect a Project Id in the current environment.
如果您能帮助解决此问题,我们将不胜感激
我能够遵循官方的快速入门,并通过使用客户端库使其正常工作,没有任何问题。我将在下面解释我所做的。
来自:
gcloud config设置项目您的项目名称
gcloud服务启用speech.googleapis.com
gcloud iam服务帐户创建[SA-NAME]\
--说明“[SA-说明]”\
--显示名称“[SA-display-name]”
gcloud iam服务帐户密钥创建~/key.json\
--iam帐户[SA-NAME]@[PROJECT-ID]。iam.gserviceaccount.com
GOOGLE\u APPLICATION\u CREDENTIALS
设置为包含服务帐户密钥的JSON文件的文件路径:
export GOOGLE\u APPLICATION\u CREDENTIALS=“[PATH]”
npm安装--save@googlecloud/speech
quickstart.js
文件,并将以下代码示例放入其中:
“严格使用”代码>
/[START speech\u quickstart]
异步函数main(){
//导入Google云客户端库
const speech=require(“@googlecloud/speech”);
常量fs=require('fs');
//创建一个客户端
const client=new speech.SpeechClient();
//要转录的音频文件的名称
常量文件名='。/resources/audio.raw';
//读取本地音频文件并将其转换为base64
const file=fs.readFileSync(文件名);
const audioBytes=file.toString('base64');
//音频文件的编码、以赫兹为单位的采样率和BCP-47语言代码
常量音频={
内容:音频字节,
};
常量配置={
编码:“LINEAR16”,
赫兹:16000,
语言代码:“en US”,
};
常量请求={
音频:音频,
config:config,
};
//检测音频文件中的语音
const[response]=等待客户端识别(请求);
常量转录=响应。结果
.map(result=>result.alternations[0]。转录本)
.join('\n');
log(“translation:${translation}”);
}
main().catch(console.error)代码>
constfilename='。/resources/audio.raw'
是test.raw音频所在的路径
我能够遵循官方的快速入门,并通过使用客户端库使其正常工作,没有任何问题。我将在下面解释我所做的。
来自:
gcloud config设置项目您的项目名称
gcloud服务启用speech.googleapis.com
gcloud iam服务帐户创建[SA-NAME]\
--说明“[SA-说明]”\
--显示名称“[SA-display-name]”
gcloud iam服务帐户密钥创建~/key.json\
--iam帐户[SA-NAME]@[PROJECT-ID]。iam.gserviceaccount.com
GOOGLE\u APPLICATION\u CREDENTIALS
设置为包含服务帐户密钥的JSON文件的文件路径:
export GOOGLE\u APPLICATION\u CREDENTIALS=“[PATH]”
npm安装--save@googlecloud/speech
quickstart.js
文件,并将以下代码示例放入其中:
“严格使用”代码>
/[START speech\u quickstart]
异步函数main(){
//导入Google云客户端库
const speech=require(“@googlecloud/speech”);
常量fs=require('fs');
//创建一个客户端
const client=new speech.SpeechClient();
//要转录的音频文件的名称
常量文件名='。/resources/audio.raw';
//读取本地音频文件并将其转换为base64
const file=fs.readFileSync(文件名);
const audioBytes=file.toString('base64');
//音频文件的编码、以赫兹为单位的采样率和BCP-47语言代码
常量音频={
内容:音频字节,
};
常量配置={
编码:“LINEAR16”,
赫兹:16000,
语言代码:“en US”,
};
常量请求={
音频:音频,
config:config,
};
//检测音频文件中的语音
const[response]=等待客户端识别(请求);
常量转录=响应。结果
.map(result=>result.alternations[0]。转录本)
.join('\n');
log(“translation:${translation}”);
}
main().catch(console.error)代码>
constfilename='。/resources/audio.raw'
是test.raw音频所在的路径 我决心
const options = {
keyFilename: 'path-to-key.json',
projectId: 'project-name',
};
const client = new speech.SpeechClient(options);