我正在尝试编写一个 Chrome 扩展程序,该扩展程序从网站获取文本并通过 Google Cloud 上的自定义 AutoML 自然语言模型运行它,然后将预测数据显示到屏幕上。
我尝试过使用 OAuth2 进行身份验证,这给了我 Permission denied 错误,并且文档说要设置一个服务帐户。我还没有弄清楚如何将 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 端的权限。有人看到这里发生了什么吗?