В проекте мне предоставлены конечные точки 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
}
],
когда я пытаюсь получить доступ fileReferences.0.mediaLink
Я получаю ошибку аутентификации.
Если я отправлю свой токен вместе с запросом на mediaLink, мне тоже не повезет (https://cloud.google.com/storage/docs/downloading-objects#download-object-json)
Я пытался использовать 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
указывая на?
Задача ещё не решена.
Других решений пока нет …