我正在尝试编写一个Chrome扩展程序,该扩展程序将从网站上获取文本,并通过Google Cloud上的自定义AutoML自然语言模型运行它,然后将预测数据显示在屏幕上。
我尝试使用OAuth2进行身份验证,这给了我“拒绝权限”错误,并且该文档说是要设置一个服务帐户。我还没有弄清楚如何将chrome扩展名添加到服务帐户中,但是我发现有人建议我必须设置一个单独的Node.JS服务器并以这种方式中继查询。
在manifest.js中,我有:
"oauth2": {
"client_id": "{account_id}.apps.googleusercontent.com",
"scopes":["https://www.googleapis.com/auth/cloud-platform"]
}
在background.js中,我有:
let authToken = '';
chrome.identity.getAuthToken({interactive: true}, function(token) {
authToken = token;
fetch("https://automl.googleapis.com/v1beta1/{name}:predict", {
method: "POST",
body: `{
"payload": {
"textSnippet": {
"content": "TEXT TO PREDICT GOES HERE",
"mime_type": "text/plain"
},
}
}`,
headers: {
Authorization: "Bearer " + authToken,
"Content-Type": "application/json"
}
}).then(response => response.text())
.then(data => console.log(data));
});
这是文档中描述的curl请求转换为fetch请求的翻译。我正在
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
据我所知,该帐户已正确设置并获得了Google Cloud方面的权限。有人看到这里发生了什么吗?
答案 0 :(得分:0)
因此,在对此感到困惑之后,答案最终是“否”,您无法直接查询,Chrome扩展功能不是很强大。我发现的解决方案是在与AutoML模型相同的Cloud Platform帐户上创建Google Cloud Function,然后使用访存将HTTP请求从Chrome扩展程序发送到Cloud Function。 我将Cloud Function设置为服务帐户,并导入了Node.JS AutoML API客户端,该客户端用于查询AutoML并将结果返回给扩展。我希望这对某人有帮助。