我正在尝试在MacOS 10.15中实现新的MacOS,我对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方案,因此我将其设置为重定向到web地址,而后者反过来又重定向到我的URL方案。
因此,在我的MacOS应用程序中单击Login之后,Safari提供了一个允许我登录该服务的窗口。成功登录后,重定向就会发生,但是网页只会转到屏幕上,上面写着
Safari无法打开指定的地址。
我可以看到地址是myurlscheme://?code=1234567890abcdefgetc...,这是正确的,但它显然没有调用ASWebAuthenticationSession回调。
如果我将URL方案添加到plist中,那么safari窗口将显示一个提示,询问您是否想在my中打开它。
我知道我可以从App的application:openURLs:方法中获取代码,但是这是很复杂的,它有一个不必要的提示供用户单击,并且还打开了ASWebAuth... safari窗口。所有这些都应该通过回调自动完成。
激活回调的唯一方法是关闭safari窗口,在这种情况下,它会以错误的方式调用。
发布于 2019-11-27 12:19:10
我刚刚回到这里再试一次,它似乎在MacOS、10.15.1和10.15.2 beta上运行得很好。
我注意到callbackURLScheme参数不能包含://
我无法在10.15上再次测试它,但是现在我很高兴使用它,前提是10.15上的每个人都会更新为10.15.1
发布于 2020-03-26 21:41:40
达伦就在MacOS中,您必须从callbackURLScheme中删除://。无论您://或不工作,iOS都可以正常工作。然而,在MacOS催化剂中似乎存在一个bug。我的应用程序在我登录后会变得更专注,但不会得到回调。还没找到解决办法。
https://stackoverflow.com/questions/58223030
复制相似问题