Firebase FIRStorageErrorDomain代码=-13021为iOS应用程序获取图像时出错

Firebase FIRStorageErrorDomain代码=-13021为iOS应用程序获取图像时出错,ios,firebase,authorization,firebase-storage,Ios,Firebase,Authorization,Firebase Storage,我正在创建一个iOS应用程序,允许用户使用他们的电话号码登录(由Firebase提供动力),它还可以获取存储在Firebase存储器中的图像。我遇到的一个问题是,在我有一段时间没有使用该应用程序,但我一直保持登录状态后,当它尝试从Firebase存储中获取图像时,偶尔会出现以下错误: firstOrageErrorDomainCodes=-13021用户无权访问“ImageLink” 错误:{“code”:403,“消息”:“权限被拒绝。无法执行此操作” 我知道这与我的Firebase规则有关,

我正在创建一个iOS应用程序,允许用户使用他们的电话号码登录(由Firebase提供动力),它还可以获取存储在Firebase存储器中的图像。我遇到的一个问题是,在我有一段时间没有使用该应用程序,但我一直保持登录状态后,当它尝试从Firebase存储中获取图像时,偶尔会出现以下错误:
firstOrageErrorDomainCodes=-13021用户无权访问“ImageLink”

错误:{“code”:403,“消息”:“权限被拒绝。无法执行此操作”

我知道这与我的Firebase规则有关,这些规则是:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

我尝试删除
if
语句,但很明显,我不想破坏存储图像的安全性。我遇到的问题是,我不明白
auth.uid
是如何存储/发送的,这个问题是因为它即将过期还是什么原因? 我的代码中的标准提取操作如下所示:

//function to actually grab the designated image from Firebase, synchronously
//returns a UIImageView
func grabImage(_ photoLink: String, _ completion: @escaping (UIImage) -> ()) {
    //keep a reference to storage
    let storage = Storage.storage()
    // Reference to an image file in Firebase Storage
    let storageRef = storage.reference(forURL: photoLink)
    //return the image to be attached to the card views
    storageRef.getData(maxSize: 40 * 1024 * 1024) { (data, error) in
        if error != nil {
            //Error occurred fetching image
            print("Failed to fetch image in grabImage!", error!)
            //appear that its still fetching on error
            completion(UIImage.gif(name: "imageLoading")!)
        } else {
            //add this latest image to the resImages result array
            completion(UIImage(data: data!)!)
        }
    }
}
对于如何发送Auth.uid,以及如何确保Auth.uid不为null,以及如何采取措施防止用户出现此错误,我有点困惑