首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASWebAuthenticationSession on macOS 12.4不能正常工作

ASWebAuthenticationSession on macOS 12.4不能正常工作
EN

Stack Overflow用户
提问于 2022-07-01 03:43:48
回答 1查看 40关注 0票数 0

我对我的应用程序使用了ASWebAuthenticationSession授权。它在macOS12.4之前运行良好,但会出现未响应的问题。在"session.start成功“之后,单击”取消“或”继续“,没有响应。

代码语言:javascript
复制
        var session = ASWebAuthenticationSession.init(url: url, callbackURLScheme: "http", completionHandler: completionHandler)

        guard let provider = NSApplication.shared.keyWindow!.contentViewController as? FlutterViewController else {
            result(FlutterError(code: "FAILED", message: "Failed to aquire root FlutterViewController" , details: nil))
            return
        }

        session.presentationContextProvider = provider

        if(!session.start()) {
            NSLog("session.start  fail");
        } else {
            NSLog("session.start success");
        }
EN

回答 1

Stack Overflow用户

发布于 2022-08-02 10:47:51

编辑:我只是注意到我没有正确阅读,并且忽略了这个问题是给macOS的,而不是iOS的。我仍然希望这些答案中的一个能找到解决方案。

我注意到两件事对我来说是不正确的。

第一个问题是,您需要为您的会话提供强有力的参考。此限制仅对iOS版本< 13.0有效。

这意味着,会话变量必须“超过”它在其中启动的被调用的方法,例如为整个类设置一个会话属性。在您提供的代码片段中,我看不到类似的内容,在我看来,它是一个作用域变量。

来自苹果此特性的文档

对于部署目标早于iOS 13的iOS应用程序,您的应用程序必须保持对会话的强烈引用,以防止系统在等待身份验证完成时释放会话。

第二件事是您的回调URL方案似乎被设置为https。该方案应该与您的应用程序包ID相匹配。它必须在您的Info.plist文件中配置。下面是一个如何实现这一目标的示例。它实际上应该是类似于com.company.myappname而不是http的东西。您的身份验证提供程序还需要重定向到com.company.myappname://someurl以使其工作。请注意,://不能是回调URL方案的一部分,而只能是之前的部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72824167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档