5

我正在使用身份验证我们的 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 完成处理程序?

4

0 回答 0