ASWebAuthenticationSession仅显示“取消”按钮

时间:2019-03-15 15:15:16

标签: single-sign-on sfsafariviewcontroller sfauthenticationsession aswebauthenticationsession

我正在使用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“(空)”

enter image description here

就像我提到的那样,这以前可行,但我不确定它在哪里破裂。我使用的测试服务没有更改,因此我想知道它是否在框架中,或者我是否缺少其他内容。

Web服务是否应将特定的标头发送回最终的网址,以便ASWebAuthenticationSession将显示“完成”按钮并用网址完成处理程序?

0 个答案:

没有答案