【问题标题】:What's the role of callbackURLScheme in ASWebAuthenticationSession/SFAuthenticationSession?ASWebAuthenticationSession/SFAuthenticationSession中callbackURLScheme的作用是什么?
【发布时间】:2020-08-11 14:46:45
【问题描述】:
我很惊讶我无法或多或少清楚地解释 究竟是如何使用 callbackURLScheme(包括 completionHandler)工作的逻辑。
是的,一般来说,很明显它具有 url 架构,可以在 plist 文件中指定,以及深度链接的工作方式。
然而,
它究竟是如何绑定到 ASWebAuthenticationSession/SFAuthenticationSession 流的?我的意思是,它是否在浏览器 url 中寻找类似的模式,如果它变得相等,它会拦截响应,关闭浏览器窗口并返回对应用程序的访问权限?
如果没有定义 url 架构,但我只是使用关联域怎么办?我应该指定传递给服务器的“返回”url,还是应该有模式?
如果我为它传递 null 怎么办?互联网上有一些注释,它以某种神奇的方式绑定到 plist 文件,但同样没有关于此的特定文档。
非常感谢您的回答!
【问题讨论】:
标签:
ios
deep-linking
url-scheme
associated-domains
【解决方案1】:
ASWebAuthenticationSession 确实有点神秘。 Swift 标头可以提供一些启示。 (跳转定义:Command+右键Xcode中的ASWebAuthenticationSession类)
完成后,服务将发送一个带有身份验证令牌的回调 URL,该 URL 将通过以下方式传递给应用程序
ASWebAuthenticationSessionCompletionHandler。
回调 URL 通常具有自定义 URL 方案。要让应用程序接收回调 URL,它需要注册
在其 Info.plist 中自定义 URL 方案,或在初始化程序中将方案设置为 callbackURLScheme 参数。
实际上,我的测试表明,在 ios 14 上它可以按照描述的方式工作。您需要注册自定义 URL 方案并为相应的参数提供 nil 或只输入参数。或两者。成功登录的完成按预期调用。文档中未提及此类详细信息。