質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

4083閲覧

[Swift]FireBaseのStorageで「User does not have permission to access」というエラーが出る

nekogrammer

総合スコア33

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/10/20 18:15

やりたいこと

FireBaseのStorageに保存した画像のURLを取得する

問題点

downloadURLメソッドを実行すると、
User does not have permission to access
というエラーが出て画像のURLを取得出来ない

やったこと

①FireBaseでプロジェクト→マイアプリを作る
②アプリのバンドルIDを登録してGoogleService-info.plistをダウンロード
③GoogleService-info.plistをXcodeのプロジェクトのルートに格納
④pod 'Firebase/Storage'でFirebaseをinstall
⑤Storageにブラウザから画像を登録
⑥プログラム(↓)でFirebaseを初期化
ビルドは通っています

プログラム(見やすくするため主要部分のみ)

■AppDelegate.swift

html

1import Firebase 2 3func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 4 // Firebaseの初期化 5 FirebaseApp.configure() 6 return true 7}

■ViewController.swift

html

1import FirebaseStorage 2 3class ViewController: UIViewController{ 4 // 変数 5 var storage:Storage? 6 var refer:StorageReference? 7 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 storage = Storage.storage() 12 refer = storage?.reference() 13 14 let path = "animals/animal_01.png" 15 let pathReference = storage?.reference(withPath: path) 16 pathReference?.downloadURL { url, error in 17 18 if let error = error { 19 // Handle any errors 20 print(error.localizedDescription) 21 } else { 22 // Get the download URL for 'images/stars.jpg' 23 print("absolue:(url?.absoluteString)") 24 } 25 } 26 } 27}

補足

そもそもの何かが足りないか、もしくはそもそものやり方が間違っているような気がしているのですが、
Googleで検索して他の方のソースコードを真似たりしているのですがうまくいかず、、
解決策を教えていただけましたら幸いです。よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

firestorageのセキュリティルールで制限かかっているのではないでしょうか。

以下のようなルールだと、ログインしている(認証済み)userのみアクセスできます。

swift

1rules_version = '2'; 2service firebase.storage { 3 match /b/{bucket}/o { 4 match /{allPaths=**} { 5 allow read, write: if request.auth != null; // 6 } 7 } 8}

以下だとログインしていなくても、アクセスできるようになります!

swift

1rules_version = '2'; 2service firebase.storage { 3 match /b/{bucket}/o { 4 match /{allPaths=**} { 5 allow read: if true; 6 } 7 } 8}

書き方などはググっていただければたくさん出ると思います!

投稿2021/10/21 02:12

Pomu3270

総合スコア280

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekogrammer

2021/10/21 02:25

naoKyo70さん、コメントありがとうございます。 頂いたご指摘のおかげで無事解決致しました! どうやったらアクセスできる権利を取得できるのかをずっと調べていて、 ユーザー登録をさせないといけないのかとか色々間違った方向に苦悩してました。。 セキュリティのルールの方はまったく頭になかったです・・・。 FirebaseもSwiftも始めたばかりで知らない概念が色々あってたまにハマりますが、 新しく概念覚えましたので、今後はセキュリティルールの設定を忘れないと思います! ありがとうございます!
Pomu3270

2021/10/21 02:27

早々な対応ありがとうございます!! よかったです!!!
nekogrammer

2021/10/21 06:25

ありがとうございます! 昨日何時間もずっと格闘していて結局何も進まなかったので、 素早く的確な解答頂けて本当に助かりました!
reckon

2022/09/09 07:57

これどこに書くんですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問