Можно ли отправлять запросы непосредственно из расширения Chrome в API Google Cloud AutoML? - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь написать расширение для Chrome, которое берет текст с веб-сайта и запускает его через пользовательскую модель AutoML Natural Language в Google Cloud, а затем отображает данные прогноза на экране.

I 'Я попытался выполнить аутентификацию с использованием 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, описанного вдокументация превратилась в запрос на получение.Я получаю

{
    "error": {
    "code": 403,
    "message": "The caller does not have permission",
    "status": "PERMISSION_DENIED"
    }
}

Насколько я могу судить, учетная запись настроена правильно и получила разрешения на стороне Google Cloud.Кто-нибудь видит, что здесь происходит?

1 Ответ

0 голосов
/ 22 апреля 2019

Итак, после недолгих размышлений ответ в итоге был НЕТ, вы не можете напрямую запрашивать, Расширение Chrome не очень мощное. Решение, которое я нашел, состояло в том, чтобы создать облачную функцию Google в той же учетной записи облачной платформы, что и модель AutoML, и использовать выборку для отправки HTTP-запросов из расширения Chrome в облачную функцию. Я сделал облачную функцию служебной учетной записью и импортировал клиент Node.JS AutoML API, который я использовал для запроса AutoML и возврата результатов в расширение. Надеюсь, это кому-нибудь пригодится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...