我正在尝试ASWebAuthenticationSession
在 MacOS 10.15 中实现新功能,但我对callbackURLScheme
.
头文件ASWebAuthenticationSession
说:
回调 URL 通常具有自定义 URL 方案。要让应用程序接收回调 URL,它需要在其 Info.plist 中注册自定义 URL 方案,或者在初始化程序中将方案设置为 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 窗口。这应该都是通过回调自动完成的。
我让回调触发的唯一方法是关闭 safari 窗口,在这种情况下,它会以错误方式回调。