我正在使用ASWebAuthenticationSession
对我们的Web服务进行身份验证,由于某种原因,最终重定向之后的唯一选择是取消。即使没有按“取消”,我也可以进行此工作,即使通过取消处理程序也已发送了回调Url,并且能够在那里解析令牌形式。但是现在我只得到错误ASWebAuthenticationSessionErrorCodeCanceledLogin
。
如何获取ASWebAuthenticationSession
以显示 Done (完成)按钮并使用回调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 :(空),错误:错误Domain = com.apple.AuthenticationServices.WebAuthenticationSession代码= 1“(空)”
就像我提到的那样,这以前可行,但我不确定它在哪里破裂。我使用的测试服务没有更改,因此我想知道它是否在框架中,或者我是否缺少其他内容。
Web服务是否应将特定的标头发送回最终的网址,以便ASWebAuthenticationSession
将显示“完成”按钮并用网址完成处理程序?