身份验证服务错误中的完成处理程序

Posted

技术标签:

【中文标题】身份验证服务错误中的完成处理程序【英文标题】:Completion handler in authentication service error 【发布时间】:2018-04-17 10:58:36 【问题描述】:

我正在执行登录操作并调用具有方法的自定义身份验证服务,该方法接收用户名和密码字典并执行 API 调用。 Auth服务中的功能如下图所示。

    func loginWithUserData(userData: Dictionary<String, Any> ,completion: @escaping (_ success:DataResponse<Any>)->Void) 
    
       NetworkManager.sharedNetworkManager.performNetworkOperation(url: myEndpoint().userSession(), httpmethod: .post, parameters: userData)  response in
        completion(response)
    

我调用Auth服务的函数如下:

    func performLoginAction(dictForLogin: [AnyHashable: Any]) 
       AuthenticationService().loginWithUserData(userData: dictForLogin as! Dictionary<String)
    

Xcode 抱怨我的 performLoginAction 函数中的参数缺少参数。我不知道在完成中添加什么:参数。完成处理程序的格式是什么或我应该返回什么?

注意:我使用的是 Swift 3。

【问题讨论】:

【参考方案1】:

您必须添加完成处理程序

func performLoginAction(dictForLogin: [AnyHashable: Any]) 
    AuthenticationService().loginWithUserData(userData: dictForLogin as! Dictionary<String, Any>, completion:  success in
       // do something with the `DataResponse<Any>` object
    )

或使用尾随闭包语法:

func performLoginAction(dictForLogin: [AnyHashable: Any], ) 
    AuthenticationService().loginWithUserData(userData: dictForLogin as! Dictionary<String, Any>)  success in
       // do something with the `DataResponse<Any>` object
    

【讨论】:

完美。谢谢!【参考方案2】:

你可以用这个-

func performLoginAction(dictForLogin: [[String: Any]]) 
    AuthenticationService().loginWithUserData(userData: dictForLogin as! [[String: Any]])  response in

    

【讨论】:

以上是关于身份验证服务错误中的完成处理程序的主要内容,如果未能解决你的问题,请参考以下文章

使用 Firebase 身份验证的 Flutter 应用程序中的 Google sign_in_failed 错误

在 tomcat 404 错误处理程序中可用的 ACEGI 身份验证

动态 Web 项目中的谷歌日历 api (java) 身份验证错误

在 Spring Security 中处理基本身份验证的未经授权的错误消息

在 Spring Security 中处理基本身份验证的未经授权的错误消息

面向服务架构中的集中式身份验证