Доступ к медиа-объекту Firebase с помощью PHP и Firebase Auth

В проекте мне предоставлены конечные точки API из БД Firebase.

Для получения данных я аутентифицирую пользователя по электронной почте и паролю (https://firebase.google.com/docs/reference/rest/auth/#section-sign-in-email-password) и затем подпишите каждый вызов API с помощью токена. (Эти пользователи настроены в БД Firebase)

Теперь одна из конечных точек API возвращает объекты Firebase Storage, например:

    "fileReferences": [
{
"id": "",
"name": "images\/-s0m31D\/picture.jpg",
"mediaLink": "https:\/\/www.googleapis.com\/download\/storage\/v1\/b\/BUCKET.appspot.com\/o\/images%2F-s0m31D%2Fpicture.jpg?generation=1537959346600572&alt=media",
"selfLink": "https:\/\/www.googleapis.com\/storage\/v1\/b\/BUCKET.appspot.com\/o\/images%2F-s0m31D%2Fpicture.jpg",
"updated": 1537959346,
"size": 7759448
}
],
  1. когда я пытаюсь получить доступ fileReferences.0.mediaLinkЯ получаю ошибку аутентификации.

  2. Если я отправлю свой токен вместе с запросом на mediaLink, мне тоже не повезет (https://cloud.google.com/storage/docs/downloading-objects#download-object-json)

  3. Я пытался использовать Google API PHP клиент https://github.com/googleapis/google-api-php-client, но понятия не имел, как я настраиваю new Google_Client() (У меня уже есть мой токен авторизации, и я ожидал, что он как-нибудь сработает)

$client = new \Google_Client();
$client->setAccessToken(['access_token' => $token]);

Как я могу получить доступ к медиа-файлам с помощью моего текущего токена авторизации? (или мне нужен другой?)

Для обработки файлов я хотел бы использовать https://github.com/googleapis/google-api-php-client как я могу заставить эту работу? Любая подсказка ценится

Редактировать: Я получил некоторые результаты в отладке JavaScript SDK

«Все», что делает SDK, создает следующую схему URL

printf('https://firebasestorage.googleapis.com/v0/b/bucket.appspot.com/o/%s', urlencode('projects/-id/logo.png'));
//http[s]://firebasestorage.googleapis.com/<api-version>/b/<bucket>/o/<object-path>

Вы должны подписать звонок https://firebasestorage.googleapis.com/v0/b/bucket.appspot.com/o/projects%2F-id%2Flogo.png с вашим заголовком токена носителя Auth! [1] Это возвращает метаданные как это:

{
"name": "projects/-id/logo.png",
"bucket": "bucket.appspot.com",
"generation": "1537960188874518",
"metageneration": "1",
"contentType": "image/png",
"timeCreated": "2018-09-26T11:09:48.874Z",
"updated": "2018-09-26T11:09:48.874Z",
"storageClass": "STANDARD",
"size": "40437",
"md5Hash": "MxkOU+6feyYtdEAgKbDgp5A==",
"contentEncoding": "identity",
"contentDisposition": "inline; filename*=utf-8''logo.png",
"crc32c": "o89Y9dQ==",
"etag": "CJae8pXE2N0CEAE=",
"downloadTokens": "32c339ff9-7e4a-42a2-890a-428f8f45d378"}

Чтобы публично поделиться своим изображением, добавьте ?альт = СМИ&маркер = 32c339ff9-7e4a-42a2-890a-428f8f45d378

https://firebasestorage.googleapis.com/v0/b/bucket.appspot.com/o/projects%2F-id%2Flogo.png?alt=media&token=32c339ff9-7e4a-42a2-890a-428f8f45d378

Токен вам не нужен, если вы отправляете Auth Header!

Я не смог найти упоминания о FireBase или о том, как справиться с моей аутентификацией в https://github.com/googleapis/google-api-php-client, поэтому я понятия не имею, помогло ли бы это мне. Но я приступил к основам …

Надеюсь, что это кому-то поможет, и любые разъяснения очень ценятся.

ВОПРОС для меня, чтобы лучше понять это все

Что mediaLink а также selfLink указывая на?

[1] если доступ к хранилищу общедоступен, подписывать его не нужно.

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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