我正在尝试实施新的ASWebAuthenticationSession
在 MacOS 10.15 中,我对callbackURLScheme
.
头文件为ASWebAuthenticationSession
says:
回调 URL 通常具有自定义 URL 方案。对于应用程序
接收回调URL,需要注册自定义URL
其Info.plist中的scheme,或将scheme设置为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 方案添加到 plist,则 safari 窗口会显示一条提示,询问您是否要在我的应用程序中打开它。
我知道我可以从应用程序委托中获取代码application:openURLs:
方法,但这很繁琐,有不必要的提示让用户点击,而且还留下了ASWebAuth...
野生动物园窗口打开。这一切都应该通过回调自动完成。
我触发回调的唯一方法是关闭 safari 窗口,在这种情况下,回调会出错。