Я пытаюсь использовать 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?
Благодарю.
Я рекомендую вам использовать эту библиотеку для доступа к Datastore из PHP
https://github.com/tomwalder/php-gds
Несколько других ссылок на вопрос SO:
API Datastore требует аутентифицированного пользователя для всех вызовов, поэтому вам нужно будет использовать OAuth.
Вы можете использовать клиентскую библиотеку API для PHP для обработки деталей аутентификации для вас:
https://developers.google.com/api-client-library/php/guide/aaa_overview
Механизм ключей API предназначен для API, которым не требуется аутентифицированный пользователь.