我们可以在 flutter 项目中从 iOS Share Extension 访问 firebase 刷新令牌吗

Can we access firebase refresh token from iOS Share Extension in a flutter project

提问人:Aakash Shrestha 提问时间:4/19/2023 最后编辑:Aakash Shrestha 更新时间:4/19/2023 访问量:55

问:

我们在做什么

  1. 我们正在从 Swift 共享扩展访问端点,我们的主要应用程序在 Flutter 中。我们只是想完成 swift native 的共享建议功能。
  2. 正如你所看到的,我们已经从 flutter 调用了 Swift 方法,并将 token 和 uuid 等数据作为 flutter 的参数传递。
  3. 我们在主应用程序中使用 firebase 令牌,对于刷新令牌,我们以应用程序中的 google 用户身份 signInSilently。

主要问题

  1. 由于我们从主 flutter 应用程序获取令牌,但在 1 小时后,firebase 令牌将过期,共享扩展也将不起作用,因为我们无法从共享扩展本身获取另一个令牌,也无法点击刷新令牌。
  2. 从共享扩展功能中,我们甚至无法点击该signInSilently,因此我们遇到了麻烦。
  3. 有没有办法让我们再次访问令牌或刷新令牌并使共享扩展在 1 小时后也能顺利运行。
func shareTextAndFileDataToPerr(){
        let sharedDefault = UserDefaults(suiteName: "group.com.perrs.app")!
        let token = sharedDefault.object(forKey: "token")
        let uuid1 = sharedDefault.object(forKey: "uuid1")
        let uuid2 = sharedDefault.object(forKey: "uuid2")
        let sharedBy = sharedDefault.object(forKey: "sharedBy")
        
        
        var documentList:Array<Dictionary<String,Any>> = []
        
        if(isText) {
            documentList.append(["attribute": "text", "key": "","document": textData,"size": 0])
        }
        else {
            for i in 0...fileSize.count-1 {
                documentList.append(["attribute": "\(fileExtension[i])","key": key[i],"document": fileNameWithExtension[i],"size":fileSize[i]])
            }
        }

        let data: [String: Any] = ["documents": documentList, "shared_by": sharedBy!, "shared_to": uuid1!]
        
        // Create a URLRequest with the URL of the server endpoint
        var request = URLRequest(url: URL(string: "https://perr.myjobladder.com/data/")!)
        request.httpMethod = "POST"
        request.allHTTPHeaderFields = [
            "Content-Type": "application/json",
            "Authorization":"Bearer \(token!)"
            
        ]
        request.httpBody = try? JSONSerialization.data(withJSONObject: data, options: .prettyPrinted)

        let task = URLSession.shared.dataTask(with: request) { data, response, error in
            
            guard data != nil else {
                            print("data is nil")
                            return
                        }

            // Handle the response from the server here
            let jsonResponse = try? JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? [String: Any]

            print(jsonResponse as Any);
            
//            Remove Loader at last
            self.stopLoader()
            
      
        }
        task.resume()
    }

在这个项目中提供任何形式的帮助将不胜感激和感激。

swift flutter dart swift3 ios8-share-extension

评论


答: 暂无答案