是否可以将查询直接从Chrome扩展程序直接发送到Google Cloud AutoML API?

时间:2019-04-08 20:53:55

标签: javascript google-chrome automl google-cloud-automl

我正在尝试编写一个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方面的权限。有人看到这里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

因此,在对此感到困惑之后,答案最终是“否”,您无法直接查询,Chrome扩展功能不是很强大。我发现的解决方案是在与AutoML模型相同的Cloud Platform帐户上创建Google Cloud Function,然后使用访存将HTTP请求从Chrome扩展程序发送到Cloud Function。 我将Cloud Function设置为服务帐户,并导入了Node.JS AutoML API客户端,该客户端用于查询AutoML并将结果返回给扩展。我希望这对某人有帮助。