我正在使用身份验证我们的 Web 服务ASWebAuthenticationSession
,出于某种原因,最终重定向后的唯一选项是Cancel。我之前有这个工作,即使我确实按下了取消,回调 Url 也是通过完成处理程序发送的,我能够在那里解析令牌表单。但现在我得到了错误ASWebAuthenticationSessionErrorCodeCanceledLogin
。
如何获得ASWebAuthenticationSession
显示完成按钮并使用回调 URL 完成处理程序?上次 iOS 更新中是否发生了变化或中断?
我如何创建会话
if (@available(iOS 12.0, *)) {
self.session = [[ASWebAuthenticationSession alloc]
initWithURL:@"http://service.com"
callbackURLScheme:@"http://website.com"
completionHandler:_sessionHandler];
[self.session start];
}
完成处理程序
_sessionHandler = ^(NSURL * _Nullable callbackURL, NSError * _Nullable error) {
NSLog(@"Callback Url: %@, Error: %@", callbackURL, error);
if ( callbackURL != nil ) {
__block NSString * token = [weakSelf webToken:@"token" fromUrl:callbackURL];
weakSelf.completionHandler([weakSelf parseWebToken:token], error);
}
else
weakSelf.completionHandler(nil, error);
};
输出
回调 URL:(空),错误:错误域 = com.apple.AuthenticationServices.WebAuthenticationSession 代码 = 1“(空)”
就像我提到的那样,这以前有效,我不确定它在哪里坏了。我使用的测试服务没有改变,所以我想知道它是否在框架中,或者我是否缺少其他东西。
Web 服务是否应该将特定标头发送回最终的 Url,以便ASWebAuthenticationSession
显示 Done 按钮并使用 Url 完成处理程序?