Доступ к Google Datastore или API Datastore из PHP App Engine

Я пытаюсь использовать Google Datastore из PHP App Engine в среде Google Cloud. Процесс выглядит не таким гладким, как Cloud Storage, поэтому вместо этого я собираюсь использовать REST API Datastore.

В документации есть место, где вы можете выполнить тестовый запрос к API хранилища данных: https://cloud.google.com/datastore/docs/apis/v1beta2/datasets/lookup#try-it

У меня проблема в том, что я хочу сделать это без OAuth (есть вариант для этого по ссылке выше). Однако, когда я это делаю, я получаю следующую ошибку:

{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"}
],
"code": 401,
"message": "Login Required"}
}

Из деталей запроса я вижу следующую подпись HTTP-запроса: POST to https://www.googleapis.com/datastore/v1beta2/datasets/MY_PROJECT_ID/lookup?key={YOUR_API_KEY},

Когда я использую свой ключ API сервера из учетных данных «API и аутентификация» Google Cloud, я получаю следующее:

{
"error": {
"errors": [
{
"domain": "global",
"reason": "authError",
"message": "HTTP Basic Authentication is not supported for this API",
"locationType": "header",
"location": "Authorization"}
],
"code": 401,
"message": "HTTP Basic Authentication is not supported for this API"}
}

Я не совсем уверен, что {YOUR_API_KEY} должен быть в этом случае, если это не ключ сервера.

Как я могу это исправить и получить доступ к API хранилища данных без OAuth?

Благодарю.

0

Решение

Я рекомендую вам использовать эту библиотеку для доступа к Datastore из PHP

https://github.com/tomwalder/php-gds

  • Есть документация
  • Он поддерживает собственный доступ к буферу протокола, который не требует цикла аутентификации, используемого в службах REST или JSON (т.е. гораздо проще и быстрее начать работу)
  • И JSON API для удаленного использования
  • Поддерживает локальное (разрабатываемое) хранилище данных

Несколько других ссылок на вопрос SO:

1

Другие решения

API Datastore требует аутентифицированного пользователя для всех вызовов, поэтому вам нужно будет использовать OAuth.

Вы можете использовать клиентскую библиотеку API для PHP для обработки деталей аутентификации для вас:
https://developers.google.com/api-client-library/php/guide/aaa_overview

Механизм ключей API предназначен для API, которым не требуется аутентифицированный пользователь.

0

По вопросам рекламы [email protected]