我正在使用Worklight 6.2 iOS本机框架。我已经实现了一个自定义MyChallengeHandler
子类ChallengeHandler
,并登录:
[[WLClient sharedInstance] login:@"SomeRealm" withDelegate:LoginListener];
在ChallengeHandler
我可以提交成功,在onSuccess:
中调用LoginListener
:
[self submitSuccess:response];
但是,我无法提交失败,我希望在onFailure:
中拨打LoginListener
。实际上,调用submitFailure:
并且onFailure:
中永远不会调用LoginListener
时看起来没有效果。
另外,我在WL submitFailure:
标题中看不到ChallengeHandler
的声明,只能在BaseChallengeHandler
中使用。
我的主要观点是,目前看起来似乎永远不会调用LoginListener
onFailure:
方法,但有时候handleChallenge:
会失败。并且LoginListener应该被释放。
这是Worklight中的已知问题,是否有解决方法?
更新1:
刚刚为JS客户端API发现了类似的问题,这对本机没有用: Adapter procedure call, reporting an authentication failure
更新2:
这可能很重要。我正在使用适配器身份验证,但在IBM示例中有submitLoginForm:
,也许我的问题仅适用于适配器身份验证。
[self submitAdapterAuthentication:invocationData options:nil]
答案 0 :(得分:0)
到目前为止,这是一个很大的模糊,但我会写一些我想到的可能性。如果有任何帮助,请告诉我,我会更新我的答案。
1)上面的代码说您使用的是课程ChallangeHandler
。我不确定拼写错误是仅在StackOverflow中还是在您的真实代码中,但该类为ChallengeHandler
,其中e
。
handleChallange
代替handleChallenge
。
2)您是否在某处注册了挑战处理程序?
[[WLClient sharedInstance] registerChallengeHandler:[[MyChallengeHandler alloc] initWithViewController:self] ];
3)您是否获得了LoginListener的成功?你的挑战处理程序?
你说文件没有提到submitFailure是对的 - 我会调查一下。
然而,在我写的代码中,我能够毫无问题地使用它。
@implementation MyChallengeHandler
//...
-(void) onSuccess:(WLResponse *)response {
NSLog(@"inside challenge success");
[self.vc.navigationController popViewControllerAnimated:YES];
[self submitSuccess:response];
}
-(void) onFailure:(WLFailResponse *)response {
NSLog(@"inside challenge failure");
[self submitFailure:response];
}