4

我正在尝试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 窗口,在这种情况下,它会以错误方式回调。

4

2 回答 2

4

我刚刚回到这里再试一次,它似乎在 MacOS10.15.110.15.2 beta.

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

我无法返回并再次对其进行测试,10.15但我很高兴现在可以使用它,假设每个人10.15都会更新到10.15.1

于 2019-11-27T12:19:10.233 回答
0

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

于 2020-03-26T21:41:40.870 回答