PHPを使用してFirebaseストレージにアップロードされている画像ですが、表示するにはアクセストークンを手動で作成する必要があります

Aug 23 2020

PHPを使用して画像をFirebaseストレージにアップロードしています。写真はアップロードされていますが、アクセス可能にするために「アクセストークン」を手動で作成する必要があるため、アクセスできません。これが私が使用しているコードです

 $bucketName = "example.appspot.com"; $objectName = 'Photos/test.jpeg';
$storage = new StorageClient(); $bucket = $storage->bucket($bucketName);
$object = $bucket->upload(fopen('sign.jpeg', 'r'),
    [
       'name' => $objectName
    
    ]
    
 ); 

回答

2 FrankvanPuffelen Aug 23 2020 at 14:37

これは実際に期待どおりに機能しています。アップロードはFirebaseSDKを経由しないため、ダウンロードURLを生成する方法はありません。

一般的な回避策は、有効期限がはるかに長い署名付きURLを作成することです。これは、CloudStorageがFirebaseのダウンロードURLに最も近いものです。

jeromegamez Aug 23 2020 at 14:48

@Frankの回答に加えてpublicRead、アップロードされたファイルにACLを割り当てて、パブリックURLを手動で作成することもできます。

$bucketName = "example.appspot.com"; $objectName = 'Photos/test.jpeg';

$storage = new StorageClient(); $bucket = $storage->bucket($bucketName);

$object = $bucket->upload(fopen('sign.jpeg', 'r'), [
   'name' => $objectName 'predefinedAcl' => 'publicRead' ]); $publicUrl = "https://{$bucket->name()}.storage.googleapis.com/{$object->name()}";
AbhishekSoni Aug 24 2020 at 01:40

アクセストークンを生成して保存するための間接的な方法を作成しました。

$payload = file_get_contents('https://firebasestorage.googleapis.com/v0/b/example.appspot.com/o/Photos%2Fpic.jpeg'); $data = json_decode($payload); echo $data->downloadTokens; 

このコードはアクセストークンを作成し、downloadTokenを画面に表示します。

みなさん、ありがとうございました。