Я пытаюсь создать расширение для Chrome, использующее Google Cloud Translation API. Я выполнил кучу инструкций на разных страницах документации по Google Translate и разработке расширений Chrome, но Я до сих пор не могу понять, как на самом деле использовать API из браузера.
Больше всего я понял, что следую части краткого руководства, в которой вы создаете учетной записи службы, получите файл ключа учетной записи службы (загруженный как файл .json), установите и инициализируйте SDK Google, установите переменную среды GOOGLE_APPLICATION_CREDENTIALS
на путь к файлу ключа JSON учетной записи службы, а затем сделайте запрос curl
, используя gcloud auth application-default print-access-token
, чтобы получить токен доступа, который будет введен как часть заголовка запроса: «Авторизация: предъявитель (здесь токен)». Таким образом успешно получен перевод.
Но в среде расширения вы не можете запускать такие команды, как gcloud
, поэтому это не сработает. Мне удалось вручную получить токен доступа с помощью команды gcloud
, а затем вставить его в свой код javascript как часть заголовка запроса (например, xmlHttpRequest.setRequestHeader('Authorization', 'Bearer ya29.c.Elr6BRuTfOtherRandomLetters');
). Но срок действия этого токена доступа истекает через 60 минут, так что это не работает стабильно.
Я также пробовал использовать метод identity.getAuthToken (после обновления в manifest.json
как сказано в документации), но это не сработало. Использование идентификатора клиента моей служебной учетной записи в качестве client_id
под oauth2
в manifest.json
привело к ошибке «Недействительный идентификатор клиента» от identity.getAuthToken
. С другой стороны, создание идентификатора клиента OAuth2 из консоли Google и использование myoauth2clientid.apps.googleusercontent.com
в качестве client_id
в oauth2
и ["https://www.googleapis.com/auth/cloud-translation", "https://www.googleapis.com/auth/cloud-platform"]
в качестве scopes
в oauth2
привело к ошибке «OAuth2 не предоставлен или отозван» из identity.getAuthToken
.
Создание ключа API со страницы консоли Google и использование его непосредственно в качестве параметра key
моего запроса на перевод даже не сработало: я получил сообщение «В запросе отсутствует действующий ключ API». ошибка.
Я действительно в растерянности. Любая помощь была бы потрясающей.