MacOS 10.15(加拿大)中的ASWebAuthenticationSession

时间:2019-10-03 16:08:55

标签: macos oauth macos-catalina aswebauthenticationsession

我正在尝试在MacOS 10.15中实现新的ASWebAuthenticationSession,对callbackURLScheme感到有些困惑。

ASWebAuthenticationSession的头文件说:

  

回调URL通常具有自定义URL方案。对于该应用   接收回调URL,它需要注册自定义URL   方案的Info.plist中,或将方案设置为callbackURLScheme   初始化程序中的参数。

所以我这样初始化:

self.webAuthSession = [[ASWebAuthenticationSession alloc] initWithURL:self.authURL
                                                    callbackURLScheme:@"myurlscheme://"
                                                    completionHandler:^(NSURL * _Nullable callbackURL, NSError * _Nullable error) {

}];

我尝试访问的oauth提供程序不支持自定义URL方案,因此我将其设置为重定向到一个网址,该网址又重定向到我的URL方案。

因此,在MacOS应用程序中单击“登录”后,Safari会显示一个窗口,允许我登录该服务。成功登录后,发生重定向,但是网页仅显示一个屏幕,显示

  

Safari无法打开指定的地址。

我可以看到地址是myurlscheme://?code=1234567890abcdefgetc...,这是正确的,但显然不是在调用ASWebAuthenticationSession回调。

如果我将URL Scheme添加到plist,则safari窗口将显示一个提示,询问您是否要在我的应用程序中打开它。

我知道我可以从App Delegate的application:openURLs:方法中获取代码,但这很奇怪,给用户带来了不必要的提示,也使ASWebAuth...野生动物园窗口保持打开状态。这应该全部通过回调自动完成。

触发回调的唯一方法是关闭safari窗口,在这种情况下它会错误地回调。

2 个答案:

答案 0 :(得分:1)

我刚刚回到这里再次尝试,它似乎在MacOS 10.15.110.15.2 beta上运行良好。

我注意到callbackURLScheme参数不能包含://

我无法返回并在10.15上再次进行测试,但是我很高兴现在使用它,前提是10.15上的每个人都已经更新为10.15.1

答案 1 :(得分:0)

Darren在MacOS中是正确的,您必须从callbackURLScheme中删除://。无论您是否://,iOS都可以正常工作。但是,在MacOS Catalyst中似乎存在一个错误。登录后,我的应用程序将变得专注,但没有得到回调。尚未找到解决方法。