我正在尝试为我的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?)
}
由于我正在实现必要的协议存根,因此预期结果是应该可以正常工作。
答案 0 :(得分:0)
根据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
}
}
除非您使用其他版本