【问题标题】:Delegate does not conform to protocol when using IBMCloudAppID Authorization delegate使用 IBMCloudAppID 授权委托时,委托不符合协议
【发布时间】:2019-05-06 13:12:30
【问题描述】:

我正在尝试为我的 iOS 应用程序使用 IBM App ID 云登录,当我添加授权委托时,它一直说“类型‘SigninDelegate’不符合协议‘TokenResponseDelegate’”,但协议存根在我的类符合协议吗?

我尝试创建自己的协议,使用相同的函数和参数,但没有成功。

如果我想使用 IBMCloudApp id 登录功能,这就是继承协议和所需使用的存根的样子。

import UIKit 
import IBMCloudAppID
import BMSCore

class SigninDelegate: AuthorizationDelegate { 

   func onAuthorizationSuccess(accessToken: AccessToken?, identityToken: IdentityToken?, refreshToken: RefreshToken?, response: Response?)

   func onAuthorizationFailure(error: AuthorizationError)


   func onAuthorizationCanceled(error: AuthorizationError) 

}

在 AuthorizationDelegate 里面有这个

public protocol AuthorizationDelegate : TokenResponseDelegate {

    func onAuthorizationCanceled()
}

然后在 TokenResponseDelegate 里面有这个

import Foundation
import BMSCore

public protocol TokenResponseDelegate {

    func onAuthorizationFailure(error: AuthorizationError)

    func onAuthorizationSuccess(accessToken: AccessToken?, identityToken: IdentityToken?, refreshToken: RefreshToken?, response:Response?)
}

预期的结果是这应该可以正常工作,因为我正在实现必要的协议存根......

【问题讨论】:

  • 您的代码是否存在复制粘贴错误,因为您的 SigninDelegateAuthorizationDelegate 具有不同的签名。

标签: ios swift


【解决方案1】:

根据 IBM 文档,您的 SigninDelegate 应该看起来像这样

import IBMCloudAppID

class delegate : AuthorizationDelegate {
    public func onAuthorizationSuccess(accessToken: AccessToken, identityToken: IdentityToken, response:Response?) {
        //User authenticated
    }

    public func onAuthorizationCanceled() {
        //Authentication cancelled by the user
    }

    public func onAuthorizationFailure(error: AuthorizationError) {
        //Exception occurred
    }
}

除非您使用不同的版本

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多